Merge branch 'mdev' into audio_fastpath
This commit is contained in:
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "wled",
|
||||
"version": "0.14.0-b15.24",
|
||||
"version": "0.14.0-b15.25",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "wled",
|
||||
"version": "0.14.0-b15.24",
|
||||
"version": "0.14.0-b15.25",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"clean-css": "^4.2.3",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wled",
|
||||
"version": "0.14.0-b15.24",
|
||||
"version": "0.14.0-b15.25",
|
||||
"description": "Tools for WLED project",
|
||||
"main": "tools/cdata.js",
|
||||
"directories": {
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
; Options
|
||||
; -------
|
||||
; USERMOD_DALLASTEMPERATURE - define this to have this user mod included wled00\usermods_list.cpp
|
||||
; USERMOD_DALLASTEMPERATURE_CELSIUS - define this to report temperatures in degrees celsius, otherwise fahrenheit will be reported
|
||||
; USERMOD_DALLASTEMPERATURE_MEASUREMENT_INTERVAL - the number of milliseconds between measurements, defaults to 60 seconds
|
||||
; USERMOD_DALLASTEMPERATURE_FIRST_MEASUREMENT_AT - the number of milliseconds after boot to take first measurement, defaults to 20 seconds
|
||||
;
|
||||
[env:d1_mini_usermod_dallas_temperature_C]
|
||||
extends = env:d1_mini
|
||||
build_flags = ${common.build_flags_esp8266} -D USERMOD_DALLASTEMPERATURE -D USERMOD_DALLASTEMPERATURE_CELSIUS
|
||||
build_flags = ${common.build_flags_esp8266} -D USERMOD_DALLASTEMPERATURE
|
||||
lib_deps = ${env.lib_deps}
|
||||
milesburton/DallasTemperature@^3.9.0
|
||||
OneWire@~2.3.5
|
||||
paulstoffregen/OneWire@~2.3.7
|
||||
# you may want to use following with ESP32
|
||||
; https://github.com/blazoncek/OneWire.git # fixes Sensor error on ESP32
|
||||
@@ -7,6 +7,8 @@ May be expanded with support for different sensor types in the future.
|
||||
|
||||
If temperature sensor is not detected during boot, this usermod will be disabled.
|
||||
|
||||
Maintained by @blazoncek
|
||||
|
||||
## Installation
|
||||
|
||||
Copy the example `platformio_override.ini` to the root directory. This file should be placed in the same directory as `platformio.ini`.
|
||||
@@ -14,7 +16,7 @@ Copy the example `platformio_override.ini` to the root directory. This file sho
|
||||
### Define Your Options
|
||||
|
||||
* `USERMOD_DALLASTEMPERATURE` - enables this user mod wled00/usermods_list.cpp
|
||||
* `USERMOD_DALLASTEMPERATURE_FIRST_MEASUREMENT_AT` - number of milliseconds after boot to take first measurement, defaults to 20000 ms
|
||||
* `USERMOD_DALLASTEMPERATURE_MEASUREMENT_INTERVAL` - number of milliseconds between measurements, defaults to 60000 ms (60s)
|
||||
|
||||
All parameters can be configured at runtime via the Usermods settings page, including pin, temperature in degrees Celsius or Farenheit and measurement interval.
|
||||
|
||||
@@ -27,7 +29,6 @@ All parameters can be configured at runtime via the Usermods settings page, incl
|
||||
|
||||
If you are using `platformio_override.ini`, you should be able to refresh the task list and see your custom task, for example `env:d1_mini_usermod_dallas_temperature_C`.
|
||||
|
||||
|
||||
If you are not using `platformio_override.ini`, you might have to uncomment `OneWire@~2.3.5 under` `[common]` section in `platformio.ini`:
|
||||
|
||||
```ini
|
||||
@@ -43,8 +44,9 @@ default_envs = d1_mini
|
||||
lib_deps =
|
||||
...
|
||||
#For Dallas sensor uncomment following line
|
||||
OneWire@~2.3.5
|
||||
...
|
||||
OneWire@~2.3.7
|
||||
# ... or you may want to use following with ESP32
|
||||
; https://github.com/blazoncek/OneWire.git # fixes Sensor error on ESP32...
|
||||
```
|
||||
|
||||
## Change Log
|
||||
@@ -56,3 +58,6 @@ lib_deps =
|
||||
* Report the number of seconds until the first read in the info screen instead of sensor error
|
||||
2021-04
|
||||
* Adaptation for runtime configuration.
|
||||
2023-05
|
||||
* Rewrite to conform to newer recommendations.
|
||||
* Recommended @blazoncek fork of OneWire for ESP32 to avoid Sensor error
|
||||
@@ -52,350 +52,378 @@ class UsermodTemperature : public Usermod {
|
||||
static const char _parasitePin[];
|
||||
|
||||
//Dallas sensor quick (& dirty) reading. Credit to - Author: Peter Scargill, August 17th, 2013
|
||||
float readDallas() {
|
||||
byte data[9];
|
||||
int16_t result; // raw data from sensor
|
||||
float retVal = -127.0f;
|
||||
if (oneWire->reset()) { // if reset() fails there are no OneWire devices
|
||||
oneWire->skip(); // skip ROM
|
||||
oneWire->write(0xBE); // read (temperature) from EEPROM
|
||||
oneWire->read_bytes(data, 9); // first 2 bytes contain temperature
|
||||
#ifdef WLED_DEBUG
|
||||
if (OneWire::crc8(data,8) != data[8]) {
|
||||
DEBUG_PRINTLN(F("CRC error reading temperature."));
|
||||
for (byte i=0; i < 9; i++) DEBUG_PRINTF("0x%02X ", data[i]);
|
||||
DEBUG_PRINT(F(" => "));
|
||||
DEBUG_PRINTF("0x%02X\n", OneWire::crc8(data,8));
|
||||
}
|
||||
#endif
|
||||
switch(sensorFound) {
|
||||
case 0x10: // DS18S20 has 9-bit precision
|
||||
result = (data[1] << 8) | data[0];
|
||||
retVal = float(result) * 0.5f;
|
||||
break;
|
||||
case 0x22: // DS18B20
|
||||
case 0x28: // DS1822
|
||||
case 0x3B: // DS1825
|
||||
case 0x42: // DS28EA00
|
||||
result = (data[1]<<4) | (data[0]>>4); // we only need whole part, we will add fraction when returning
|
||||
if (data[1] & 0x80) result |= 0xF000; // fix negative value
|
||||
retVal = float(result) + ((data[0] & 0x08) ? 0.5f : 0.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (byte i=1; i<9; i++) data[0] &= data[i];
|
||||
return data[0]==0xFF ? -127.0f : retVal;
|
||||
}
|
||||
|
||||
void requestTemperatures() {
|
||||
DEBUG_PRINTLN(F("Requesting temperature."));
|
||||
oneWire->reset();
|
||||
oneWire->skip(); // skip ROM
|
||||
oneWire->write(0x44,parasite); // request new temperature reading
|
||||
if (parasite && parasitePin >=0 ) digitalWrite(parasitePin, HIGH); // has to happen within 10us (open MOSFET)
|
||||
lastTemperaturesRequest = millis();
|
||||
waitingForConversion = true;
|
||||
}
|
||||
|
||||
void readTemperature() {
|
||||
if (parasite && parasitePin >=0 ) digitalWrite(parasitePin, LOW); // deactivate power (close MOSFET)
|
||||
temperature = readDallas();
|
||||
lastMeasurement = millis();
|
||||
waitingForConversion = false;
|
||||
//DEBUG_PRINTF("Read temperature %2.1f.\n", temperature); // does not work properly on 8266
|
||||
DEBUG_PRINT(F("Read temperature "));
|
||||
DEBUG_PRINTLN(temperature);
|
||||
}
|
||||
|
||||
bool findSensor() {
|
||||
DEBUG_PRINTLN(F("Searching for sensor..."));
|
||||
uint8_t deviceAddress[8] = {0,0,0,0,0,0,0,0};
|
||||
// find out if we have DS18xxx sensor attached
|
||||
oneWire->reset_search();
|
||||
delay(10);
|
||||
while (oneWire->search(deviceAddress)) {
|
||||
DEBUG_PRINTLN(F("Found something..."));
|
||||
if (oneWire->crc8(deviceAddress, 7) == deviceAddress[7]) {
|
||||
switch (deviceAddress[0]) {
|
||||
case 0x10: // DS18S20
|
||||
case 0x22: // DS18B20
|
||||
case 0x28: // DS1822
|
||||
case 0x3B: // DS1825
|
||||
case 0x42: // DS28EA00
|
||||
DEBUG_PRINTLN(F("Sensor found."));
|
||||
sensorFound = deviceAddress[0];
|
||||
DEBUG_PRINTF("0x%02X\n", sensorFound);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_PRINTLN(F("Sensor NOT found."));
|
||||
return false;
|
||||
}
|
||||
|
||||
float readDallas();
|
||||
void requestTemperatures();
|
||||
void readTemperature();
|
||||
bool findSensor();
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
void publishHomeAssistantAutodiscovery() {
|
||||
if (!WLED_MQTT_CONNECTED) return;
|
||||
|
||||
char json_str[1024], buf[128];
|
||||
size_t payload_size;
|
||||
StaticJsonDocument<1024> json;
|
||||
|
||||
sprintf_P(buf, PSTR("%s Temperature"), serverDescription);
|
||||
json[F("name")] = buf;
|
||||
strcpy(buf, mqttDeviceTopic);
|
||||
strcat_P(buf, PSTR("/temperature"));
|
||||
json[F("state_topic")] = buf;
|
||||
json[F("device_class")] = F("temperature");
|
||||
json[F("unique_id")] = escapedMac.c_str();
|
||||
json[F("unit_of_measurement")] = F("°C");
|
||||
payload_size = serializeJson(json, json_str);
|
||||
|
||||
sprintf_P(buf, PSTR("homeassistant/sensor/%s/config"), escapedMac.c_str());
|
||||
mqtt->publish(buf, 0, true, json_str, payload_size);
|
||||
HApublished = true;
|
||||
}
|
||||
void publishHomeAssistantAutodiscovery();
|
||||
#endif
|
||||
|
||||
public:
|
||||
|
||||
UsermodTemperature(const char *name, bool enabled):Usermod(name, enabled) {} //WLEDMM: this shouldn't be necessary (passthrough of constructor), maybe because Usermod is an abstract class
|
||||
|
||||
void setup() {
|
||||
int retries = 10;
|
||||
sensorFound = 0;
|
||||
temperature = -127.0f; // default to -127, DS18B20 only goes down to -50C
|
||||
if (enabled) {
|
||||
// config says we are enabled
|
||||
USER_PRINTLN(F("Finding temperature pin..."));
|
||||
// pin retrieved from cfg.json (readFromConfig()) prior to running setup()
|
||||
if (temperaturePin >= 0 && pinManager.allocatePin(temperaturePin, true, PinOwner::UM_Temperature)) {
|
||||
oneWire = new OneWire(temperaturePin);
|
||||
if (oneWire->reset()) {
|
||||
while (!findSensor() && retries--) {
|
||||
delay(25); // try to find sensor
|
||||
}
|
||||
}
|
||||
if (parasite && pinManager.allocatePin(parasitePin, true, PinOwner::UM_Temperature)) {
|
||||
pinMode(parasitePin, OUTPUT);
|
||||
digitalWrite(parasitePin, LOW); // deactivate power (close MOSFET)
|
||||
} else {
|
||||
parasitePin = -1;
|
||||
}
|
||||
} else {
|
||||
if (temperaturePin >= 0) {
|
||||
USER_PRINTLN(F("Temperature pin allocation failed."));
|
||||
}
|
||||
temperaturePin = -1; // allocation failed
|
||||
}
|
||||
}
|
||||
lastMeasurement = millis() - readingInterval + 10000;
|
||||
initDone = true;
|
||||
USER_PRINTLN(F("temperature usermod initialized."));
|
||||
}
|
||||
|
||||
void loop() {
|
||||
unsigned long last_runtime = 0; // WLEDMM ensure that strip.isUpdating() will not block longer that 4000ms
|
||||
if (!enabled || !sensorFound || (strip.isUpdating() && (millis()-last_runtime < 4000))) return; // WLEDMM be nice, but not too nice
|
||||
last_runtime = millis();
|
||||
|
||||
static uint8_t errorCount = 0;
|
||||
unsigned long now = millis();
|
||||
|
||||
// check to see if we are due for taking a measurement
|
||||
// lastMeasurement will not be updated until the conversion
|
||||
// is complete the the reading is finished
|
||||
if (now - lastMeasurement < readingInterval) return;
|
||||
|
||||
// we are due for a measurement, if we are not already waiting
|
||||
// for a conversion to complete, then make a new request for temps
|
||||
if (!waitingForConversion) {
|
||||
requestTemperatures();
|
||||
return;
|
||||
}
|
||||
|
||||
// we were waiting for a conversion to complete, have we waited log enough?
|
||||
if (now - lastTemperaturesRequest >= 750 /* 93.75ms per the datasheet but can be up to 750ms */) {
|
||||
readTemperature();
|
||||
if (getTemperatureC() < -100.0f) {
|
||||
if (++errorCount > 10) sensorFound = 0;
|
||||
lastMeasurement = now - readingInterval + 300; // force new measurement in 300ms
|
||||
return;
|
||||
}
|
||||
errorCount = 0;
|
||||
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
if (WLED_MQTT_CONNECTED) {
|
||||
char subuf[64];
|
||||
strcpy(subuf, mqttDeviceTopic);
|
||||
if (temperature > -100.0f) {
|
||||
// dont publish super low temperature as the graph will get messed up
|
||||
// the DallasTemperature library returns -127C or -196.6F when problem
|
||||
// reading the sensor
|
||||
strcat_P(subuf, PSTR("/temperature"));
|
||||
mqtt->publish(subuf, 0, false, String(getTemperatureC()).c_str());
|
||||
strcat_P(subuf, PSTR("_f"));
|
||||
mqtt->publish(subuf, 0, false, String(getTemperatureF()).c_str());
|
||||
} else {
|
||||
// publish something else to indicate status?
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* connected() is called every time the WiFi is (re)connected
|
||||
* Use it to initialize network interfaces
|
||||
*/
|
||||
//void connected() {}
|
||||
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
/**
|
||||
* subscribe to MQTT topic if needed
|
||||
*/
|
||||
void onMqttConnect(bool sessionPresent) {
|
||||
//(re)subscribe to required topics
|
||||
//char subuf[64];
|
||||
if (mqttDeviceTopic[0] != 0) {
|
||||
publishHomeAssistantAutodiscovery();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* API calls te enable data exchange between WLED modules
|
||||
*/
|
||||
inline float getTemperatureC() {
|
||||
return (float)temperature;
|
||||
inline float getTemperatureC() { return temperature; }
|
||||
inline float getTemperatureF() { return temperature * 1.8f + 32.0f; }
|
||||
float getTemperature();
|
||||
const char *getTemperatureUnit();
|
||||
uint16_t getId() { return USERMOD_ID_TEMPERATURE; }
|
||||
|
||||
void setup();
|
||||
void loop();
|
||||
//void connected();
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
void onMqttConnect(bool sessionPresent);
|
||||
#endif
|
||||
//void onUpdateBegin(bool init);
|
||||
|
||||
//bool handleButton(uint8_t b);
|
||||
//void handleOverlayDraw();
|
||||
|
||||
void addToJsonInfo(JsonObject& root);
|
||||
//void addToJsonState(JsonObject &root);
|
||||
//void readFromJsonState(JsonObject &root);
|
||||
void addToConfig(JsonObject &root);
|
||||
bool readFromConfig(JsonObject &root);
|
||||
|
||||
void appendConfigData();
|
||||
};
|
||||
|
||||
//Dallas sensor quick (& dirty) reading. Credit to - Author: Peter Scargill, August 17th, 2013
|
||||
float UsermodTemperature::readDallas() {
|
||||
byte data[9];
|
||||
int16_t result; // raw data from sensor
|
||||
float retVal = -127.0f;
|
||||
if (oneWire->reset()) { // if reset() fails there are no OneWire devices
|
||||
oneWire->skip(); // skip ROM
|
||||
oneWire->write(0xBE); // read (temperature) from EEPROM
|
||||
oneWire->read_bytes(data, 9); // first 2 bytes contain temperature
|
||||
#ifdef WLED_DEBUG
|
||||
if (OneWire::crc8(data,8) != data[8]) {
|
||||
DEBUG_PRINTLN(F("CRC error reading temperature."));
|
||||
for (byte i=0; i < 9; i++) DEBUG_PRINTF("0x%02X ", data[i]);
|
||||
DEBUG_PRINT(F(" => "));
|
||||
DEBUG_PRINTF("0x%02X\n", OneWire::crc8(data,8));
|
||||
}
|
||||
inline float getTemperatureF() {
|
||||
return (float)temperature * 1.8f + 32;
|
||||
#endif
|
||||
switch(sensorFound) {
|
||||
case 0x10: // DS18S20 has 9-bit precision
|
||||
result = (data[1] << 8) | data[0];
|
||||
retVal = float(result) * 0.5f;
|
||||
break;
|
||||
case 0x22: // DS18B20
|
||||
case 0x28: // DS1822
|
||||
case 0x3B: // DS1825
|
||||
case 0x42: // DS28EA00
|
||||
result = (data[1]<<4) | (data[0]>>4); // we only need whole part, we will add fraction when returning
|
||||
if (data[1] & 0x80) result |= 0xF000; // fix negative value
|
||||
retVal = float(result) + ((data[0] & 0x08) ? 0.5f : 0.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (byte i=1; i<9; i++) data[0] &= data[i];
|
||||
return data[0]==0xFF ? -127.0f : retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
|
||||
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
|
||||
* Below it is shown how this could be used for e.g. a light sensor
|
||||
*/
|
||||
void addToJsonInfo(JsonObject& root) {
|
||||
// dont add temperature to info if we are disabled
|
||||
if (!enabled) return;
|
||||
void UsermodTemperature::requestTemperatures() {
|
||||
DEBUG_PRINTLN(F("Requesting temperature."));
|
||||
oneWire->reset();
|
||||
oneWire->skip(); // skip ROM
|
||||
oneWire->write(0x44,parasite); // request new temperature reading
|
||||
if (parasite && parasitePin >=0 ) digitalWrite(parasitePin, HIGH); // has to happen within 10us (open MOSFET)
|
||||
lastTemperaturesRequest = millis();
|
||||
waitingForConversion = true;
|
||||
}
|
||||
|
||||
JsonObject user = root["u"];
|
||||
if (user.isNull()) user = root.createNestedObject("u");
|
||||
void UsermodTemperature::readTemperature() {
|
||||
if (parasite && parasitePin >=0 ) digitalWrite(parasitePin, LOW); // deactivate power (close MOSFET)
|
||||
temperature = readDallas();
|
||||
lastMeasurement = millis();
|
||||
waitingForConversion = false;
|
||||
//DEBUG_PRINTF("Read temperature %2.1f.\n", temperature); // does not work properly on 8266
|
||||
DEBUG_PRINT(F("Read temperature "));
|
||||
DEBUG_PRINTLN(temperature);
|
||||
}
|
||||
|
||||
JsonArray temp = user.createNestedArray(FPSTR(_name));
|
||||
|
||||
if (temperature <= -100.0f) {
|
||||
temp.add(0);
|
||||
temp.add(F(" Sensor Error!"));
|
||||
return;
|
||||
bool UsermodTemperature::findSensor() {
|
||||
DEBUG_PRINTLN(F("Searching for sensor..."));
|
||||
uint8_t deviceAddress[8] = {0,0,0,0,0,0,0,0};
|
||||
// find out if we have DS18xxx sensor attached
|
||||
oneWire->reset_search();
|
||||
delay(10);
|
||||
while (oneWire->search(deviceAddress)) {
|
||||
DEBUG_PRINTLN(F("Found something..."));
|
||||
if (oneWire->crc8(deviceAddress, 7) == deviceAddress[7]) {
|
||||
switch (deviceAddress[0]) {
|
||||
case 0x10: // DS18S20
|
||||
case 0x22: // DS18B20
|
||||
case 0x28: // DS1822
|
||||
case 0x3B: // DS1825
|
||||
case 0x42: // DS28EA00
|
||||
DEBUG_PRINTLN(F("Sensor found."));
|
||||
sensorFound = deviceAddress[0];
|
||||
DEBUG_PRINTF("0x%02X\n", sensorFound);
|
||||
return true;
|
||||
}
|
||||
|
||||
temp.add(degC ? getTemperatureC() : getTemperatureF());
|
||||
temp.add(degC ? F("°C") : F("°F"));
|
||||
|
||||
JsonObject sensor = root[F("sensor")];
|
||||
if (sensor.isNull()) sensor = root.createNestedObject(F("sensor"));
|
||||
temp = sensor.createNestedArray(F("temp"));
|
||||
temp.add(degC ? temperature : (float)temperature * 1.8f + 32);
|
||||
temp.add(degC ? F("°C") : F("°F"));
|
||||
}
|
||||
}
|
||||
DEBUG_PRINTLN(F("Sensor NOT found."));
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
|
||||
* Values in the state object may be modified by connected clients
|
||||
*/
|
||||
//void addToJsonState(JsonObject &root)
|
||||
//{
|
||||
//}
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
void UsermodTemperature::publishHomeAssistantAutodiscovery() {
|
||||
if (!WLED_MQTT_CONNECTED) return;
|
||||
|
||||
/**
|
||||
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
|
||||
* Values in the state object may be modified by connected clients
|
||||
* Read "<usermodname>_<usermodparam>" from json state and and change settings (i.e. GPIO pin) used.
|
||||
*/
|
||||
//void readFromJsonState(JsonObject &root) {
|
||||
// if (!initDone) return; // prevent crash on boot applyPreset()
|
||||
//}
|
||||
char json_str[1024], buf[128];
|
||||
size_t payload_size;
|
||||
StaticJsonDocument<1024> json;
|
||||
|
||||
/**
|
||||
* addToConfig() (called from set.cpp) stores persistent properties to cfg.json
|
||||
*/
|
||||
void addToConfig(JsonObject &root) {
|
||||
Usermod::addToConfig(root);
|
||||
JsonObject top = root[FPSTR(_name)];
|
||||
sprintf_P(buf, PSTR("%s Temperature"), serverDescription);
|
||||
json[F("name")] = buf;
|
||||
strcpy(buf, mqttDeviceTopic);
|
||||
strcat_P(buf, PSTR("/temperature"));
|
||||
json[F("state_topic")] = buf;
|
||||
json[F("device_class")] = F("temperature");
|
||||
json[F("unique_id")] = escapedMac.c_str();
|
||||
json[F("unit_of_measurement")] = F("°C");
|
||||
payload_size = serializeJson(json, json_str);
|
||||
|
||||
// we add JSON object: {"Temperature": {"pin": 0, "degC": true}}
|
||||
top["pin"] = temperaturePin; // usermodparam
|
||||
top["degC"] = degC; // usermodparam
|
||||
top[FPSTR(_readInterval)] = readingInterval / 1000;
|
||||
top[FPSTR(_parasite)] = parasite;
|
||||
top[FPSTR(_parasitePin)] = parasitePin;
|
||||
DEBUG_PRINTLN(F("Temperature config saved."));
|
||||
}
|
||||
sprintf_P(buf, PSTR("homeassistant/sensor/%s/config"), escapedMac.c_str());
|
||||
mqtt->publish(buf, 0, true, json_str, payload_size);
|
||||
HApublished = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* readFromConfig() is called before setup() to populate properties from values stored in cfg.json
|
||||
*
|
||||
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
||||
*/
|
||||
bool readFromConfig(JsonObject &root) {
|
||||
/*bool configComplete = */Usermod::readFromConfig(root); //WLEDMM: configComplete not implemented here (todo?)
|
||||
JsonObject top = root[FPSTR(_name)];
|
||||
DEBUG_PRINT(FPSTR(_name));
|
||||
|
||||
// we look for JSON object: {"Temperature": {"pin": 0, "degC": true}}
|
||||
int8_t newTemperaturePin = temperaturePin;
|
||||
|
||||
if (top.isNull()) {
|
||||
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
|
||||
return false;
|
||||
}
|
||||
|
||||
newTemperaturePin = top["pin"] | newTemperaturePin;
|
||||
degC = top["degC"] | degC;
|
||||
readingInterval = top[FPSTR(_readInterval)] | readingInterval/1000;
|
||||
readingInterval = min(120,max(10,(int)readingInterval)) * 1000; // convert to ms
|
||||
parasite = top[FPSTR(_parasite)] | parasite;
|
||||
parasitePin = top[FPSTR(_parasitePin)] | parasitePin;
|
||||
|
||||
if (!initDone) {
|
||||
// first run: reading from cfg.json
|
||||
temperaturePin = newTemperaturePin;
|
||||
DEBUG_PRINTLN(F(" config loaded."));
|
||||
} else {
|
||||
DEBUG_PRINTLN(F(" config (re)loaded."));
|
||||
// changing paramters from settings page
|
||||
if (newTemperaturePin != temperaturePin) {
|
||||
DEBUG_PRINTLN(F("Re-init temperature."));
|
||||
// deallocate pin and release memory
|
||||
delete oneWire;
|
||||
pinManager.deallocatePin(temperaturePin, PinOwner::UM_Temperature);
|
||||
temperaturePin = newTemperaturePin;
|
||||
pinManager.deallocatePin(parasitePin, PinOwner::UM_Temperature);
|
||||
// initialise
|
||||
setup();
|
||||
void UsermodTemperature::setup() {
|
||||
int retries = 10;
|
||||
sensorFound = 0;
|
||||
temperature = -127.0f; // default to -127, DS18B20 only goes down to -50C
|
||||
if (enabled) {
|
||||
// config says we are enabled
|
||||
DEBUG_PRINTLN(F("Allocating temperature pin..."));
|
||||
// pin retrieved from cfg.json (readFromConfig()) prior to running setup()
|
||||
if (temperaturePin >= 0 && pinManager.allocatePin(temperaturePin, true, PinOwner::UM_Temperature)) {
|
||||
oneWire = new OneWire(temperaturePin);
|
||||
if (oneWire->reset()) {
|
||||
while (!findSensor() && retries--) {
|
||||
delay(25); // try to find sensor
|
||||
}
|
||||
}
|
||||
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
||||
return !top[FPSTR(_parasitePin)].isNull();
|
||||
if (parasite && pinManager.allocatePin(parasitePin, true, PinOwner::UM_Temperature)) {
|
||||
pinMode(parasitePin, OUTPUT);
|
||||
digitalWrite(parasitePin, LOW); // deactivate power (close MOSFET)
|
||||
} else {
|
||||
parasitePin = -1;
|
||||
}
|
||||
} else {
|
||||
if (temperaturePin >= 0) {
|
||||
DEBUG_PRINTLN(F("Temperature pin allocation failed."));
|
||||
}
|
||||
temperaturePin = -1; // allocation failed
|
||||
}
|
||||
}
|
||||
lastMeasurement = millis() - readingInterval + 10000;
|
||||
initDone = true;
|
||||
}
|
||||
|
||||
void appendConfigData()
|
||||
{
|
||||
oappend(SET_F("addHB('Temperature');")); // WLEDMM
|
||||
oappend(SET_F("addInfo('Temperature:parasite-pwr")); //WLEDMM use literals
|
||||
oappend(SET_F("',1,'<i>(if no Vcc connected)</i>');")); // 0 is field type, 1 is actual field
|
||||
oappend(SET_F("addInfo('Temperature:parasite-pwr-pin")); //WLEDMM use literals
|
||||
oappend(SET_F("',1,'<i>(for external MOSFET)</i>');")); // 0 is field type, 1 is actual field
|
||||
}
|
||||
void UsermodTemperature::loop() {
|
||||
if (!enabled || !sensorFound || strip.isUpdating()) return;
|
||||
|
||||
uint16_t getId()
|
||||
{
|
||||
return USERMOD_ID_TEMPERATURE;
|
||||
static uint8_t errorCount = 0;
|
||||
unsigned long now = millis();
|
||||
|
||||
// check to see if we are due for taking a measurement
|
||||
// lastMeasurement will not be updated until the conversion
|
||||
// is complete the the reading is finished
|
||||
if (now - lastMeasurement < readingInterval) return;
|
||||
|
||||
// we are due for a measurement, if we are not already waiting
|
||||
// for a conversion to complete, then make a new request for temps
|
||||
if (!waitingForConversion) {
|
||||
requestTemperatures();
|
||||
return;
|
||||
}
|
||||
|
||||
// we were waiting for a conversion to complete, have we waited log enough?
|
||||
if (now - lastTemperaturesRequest >= 750 /* 93.75ms per the datasheet but can be up to 750ms */) {
|
||||
readTemperature();
|
||||
if (getTemperatureC() < -100.0f) {
|
||||
if (++errorCount > 10) sensorFound = 0;
|
||||
lastMeasurement = now - readingInterval + 300; // force new measurement in 300ms
|
||||
return;
|
||||
}
|
||||
};
|
||||
errorCount = 0;
|
||||
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
if (WLED_MQTT_CONNECTED) {
|
||||
char subuf[64];
|
||||
strcpy(subuf, mqttDeviceTopic);
|
||||
if (temperature > -100.0f) {
|
||||
// dont publish super low temperature as the graph will get messed up
|
||||
// the DallasTemperature library returns -127C or -196.6F when problem
|
||||
// reading the sensor
|
||||
strcat_P(subuf, PSTR("/temperature"));
|
||||
mqtt->publish(subuf, 0, false, String(getTemperatureC()).c_str());
|
||||
strcat_P(subuf, PSTR("_f"));
|
||||
mqtt->publish(subuf, 0, false, String(getTemperatureF()).c_str());
|
||||
} else {
|
||||
// publish something else to indicate status?
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* connected() is called every time the WiFi is (re)connected
|
||||
* Use it to initialize network interfaces
|
||||
*/
|
||||
//void UsermodTemperature::connected() {}
|
||||
|
||||
#ifndef WLED_DISABLE_MQTT
|
||||
/**
|
||||
* subscribe to MQTT topic if needed
|
||||
*/
|
||||
void UsermodTemperature::onMqttConnect(bool sessionPresent) {
|
||||
//(re)subscribe to required topics
|
||||
//char subuf[64];
|
||||
if (mqttDeviceTopic[0] != 0) {
|
||||
publishHomeAssistantAutodiscovery();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
|
||||
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
|
||||
* Below it is shown how this could be used for e.g. a light sensor
|
||||
*/
|
||||
void UsermodTemperature::addToJsonInfo(JsonObject& root) {
|
||||
// dont add temperature to info if we are disabled
|
||||
if (!enabled) return;
|
||||
|
||||
JsonObject user = root["u"];
|
||||
if (user.isNull()) user = root.createNestedObject("u");
|
||||
|
||||
JsonArray temp = user.createNestedArray(FPSTR(_name));
|
||||
|
||||
if (temperature <= -100.0f) {
|
||||
temp.add(0);
|
||||
temp.add(F(" Sensor Error!"));
|
||||
return;
|
||||
}
|
||||
|
||||
temp.add(getTemperature());
|
||||
temp.add(getTemperatureUnit());
|
||||
|
||||
JsonObject sensor = root[F("sensor")];
|
||||
if (sensor.isNull()) sensor = root.createNestedObject(F("sensor"));
|
||||
temp = sensor.createNestedArray(F("temperature"));
|
||||
temp.add(getTemperature());
|
||||
temp.add(getTemperatureUnit());
|
||||
}
|
||||
|
||||
/**
|
||||
* addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object).
|
||||
* Values in the state object may be modified by connected clients
|
||||
*/
|
||||
//void UsermodTemperature::addToJsonState(JsonObject &root)
|
||||
//{
|
||||
//}
|
||||
|
||||
/**
|
||||
* readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object).
|
||||
* Values in the state object may be modified by connected clients
|
||||
* Read "<usermodname>_<usermodparam>" from json state and and change settings (i.e. GPIO pin) used.
|
||||
*/
|
||||
//void UsermodTemperature::readFromJsonState(JsonObject &root) {
|
||||
// if (!initDone) return; // prevent crash on boot applyPreset()
|
||||
//}
|
||||
|
||||
/**
|
||||
* addToConfig() (called from set.cpp) stores persistent properties to cfg.json
|
||||
*/
|
||||
void UsermodTemperature::addToConfig(JsonObject &root) {
|
||||
// we add JSON object: {"Temperature": {"pin": 0, "degC": true}}
|
||||
//WLEDMM: call superclass
|
||||
Usermod::addToConfig(root);
|
||||
JsonObject top = root[FPSTR(_name)];
|
||||
|
||||
top["pin"] = temperaturePin; // usermodparam
|
||||
top["degC"] = degC; // usermodparam
|
||||
top[FPSTR(_readInterval)] = readingInterval / 1000;
|
||||
top[FPSTR(_parasite)] = parasite;
|
||||
top[FPSTR(_parasitePin)] = parasitePin;
|
||||
DEBUG_PRINTLN(F("Temperature config saved."));
|
||||
}
|
||||
|
||||
/**
|
||||
* readFromConfig() is called before setup() to populate properties from values stored in cfg.json
|
||||
*
|
||||
* The function should return true if configuration was successfully loaded or false if there was no configuration.
|
||||
*/
|
||||
bool UsermodTemperature::readFromConfig(JsonObject &root) {
|
||||
// we look for JSON object: {"Temperature": {"pin": 0, "degC": true}}
|
||||
//WLEDMM call superclass
|
||||
Usermod::readFromConfig(root); //WLEDMM: configComplete not implemented here (todo?)
|
||||
JsonObject top = root[FPSTR(_name)];
|
||||
DEBUG_PRINT(FPSTR(_name));
|
||||
|
||||
int8_t newTemperaturePin = temperaturePin;
|
||||
|
||||
if (top.isNull()) {
|
||||
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
|
||||
return false;
|
||||
}
|
||||
|
||||
newTemperaturePin = top["pin"] | newTemperaturePin;
|
||||
degC = top["degC"] | degC;
|
||||
readingInterval = top[FPSTR(_readInterval)] | readingInterval/1000;
|
||||
readingInterval = min(120,max(10,(int)readingInterval)) * 1000; // convert to ms
|
||||
parasite = top[FPSTR(_parasite)] | parasite;
|
||||
parasitePin = top[FPSTR(_parasitePin)] | parasitePin;
|
||||
|
||||
if (!initDone) {
|
||||
// first run: reading from cfg.json
|
||||
temperaturePin = newTemperaturePin;
|
||||
DEBUG_PRINTLN(F(" config loaded."));
|
||||
} else {
|
||||
DEBUG_PRINTLN(F(" config (re)loaded."));
|
||||
// changing paramters from settings page
|
||||
if (newTemperaturePin != temperaturePin) {
|
||||
DEBUG_PRINTLN(F("Re-init temperature."));
|
||||
// deallocate pin and release memory
|
||||
delete oneWire;
|
||||
pinManager.deallocatePin(temperaturePin, PinOwner::UM_Temperature);
|
||||
temperaturePin = newTemperaturePin;
|
||||
pinManager.deallocatePin(parasitePin, PinOwner::UM_Temperature);
|
||||
// initialise
|
||||
setup();
|
||||
}
|
||||
}
|
||||
// use "return !top["newestParameter"].isNull();" when updating Usermod with new features
|
||||
return !top[FPSTR(_parasitePin)].isNull();
|
||||
}
|
||||
|
||||
void UsermodTemperature::appendConfigData() {
|
||||
oappend(SET_F("addHB('Temperature');")); // WLEDMM
|
||||
oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":")); oappend(String(FPSTR(_parasite)).c_str());
|
||||
oappend(SET_F("',1,'<i>(if no Vcc connected)</i>');")); // 0 is field type, 1 is actual field
|
||||
oappend(SET_F("addInfo('")); oappend(String(FPSTR(_name)).c_str()); oappend(SET_F(":")); oappend(String(FPSTR(_parasitePin)).c_str());
|
||||
oappend(SET_F("',1,'<i>(for external MOSFET)</i>');")); // 0 is field type, 1 is actual field
|
||||
}
|
||||
|
||||
float UsermodTemperature::getTemperature() {
|
||||
return degC ? getTemperatureC() : getTemperatureF();
|
||||
}
|
||||
|
||||
const char *UsermodTemperature::getTemperatureUnit() {
|
||||
return degC ? "°C" : "°F";
|
||||
}
|
||||
|
||||
// strings to reduce flash memory usage (used more than twice)
|
||||
const char UsermodTemperature::_readInterval[] PROGMEM = "read-interval-s";
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#include "wled.h"
|
||||
/*
|
||||
* Register your v2 usermods here!
|
||||
*/
|
||||
|
||||
/*
|
||||
* Add/uncomment your usermod filename here (and once more below)
|
||||
* || || ||
|
||||
* \/ \/ \/
|
||||
*/
|
||||
//#include "usermod_v2_example.h"
|
||||
#ifdef USERMOD_DALLASTEMPERATURE
|
||||
#include "../usermods/Temperature/usermod_temperature.h"
|
||||
#endif
|
||||
|
||||
//#include "usermod_v2_empty.h"
|
||||
|
||||
void registerUsermods()
|
||||
{
|
||||
/*
|
||||
* Add your usermod class name here
|
||||
* || || ||
|
||||
* \/ \/ \/
|
||||
*/
|
||||
//usermods.add(new MyExampleUsermod());
|
||||
#ifdef USERMOD_DALLASTEMPERATURE
|
||||
usermods.add(new UsermodTemperature());
|
||||
#endif
|
||||
|
||||
//usermods.add(new UsermodRenameMe());
|
||||
}
|
||||
118
wled00/FX.cpp
118
wled00/FX.cpp
@@ -7631,6 +7631,7 @@ uint16_t mode_2Ddistortionwaves() {
|
||||
}
|
||||
static const char _data_FX_MODE_2DDISTORTIONWAVES[] PROGMEM = "Distortion Waves@!,Scale;;;2";
|
||||
|
||||
|
||||
//Soap
|
||||
//@Stepko
|
||||
//Idea from https://www.youtube.com/watch?v=DiHBgITrZck&ab_channel=StefanPetrick
|
||||
@@ -7648,8 +7649,10 @@ uint16_t mode_2Dsoap() {
|
||||
uint32_t *noise32_x = reinterpret_cast<uint32_t*>(SEGENV.data + dataSize);
|
||||
uint32_t *noise32_y = reinterpret_cast<uint32_t*>(SEGENV.data + dataSize + sizeof(uint32_t));
|
||||
uint32_t *noise32_z = reinterpret_cast<uint32_t*>(SEGENV.data + dataSize + sizeof(uint32_t)*2);
|
||||
uint32_t scale32_x = 160000U/cols;
|
||||
uint32_t scale32_y = 160000U/rows;
|
||||
const uint32_t scale32_x = 160000U/cols;
|
||||
const uint32_t scale32_y = 160000U/rows;
|
||||
const uint32_t mov = MIN(cols,rows)*(SEGMENT.speed+2)/2;
|
||||
const uint8_t smoothness = MIN(250,SEGMENT.intensity); // limit as >250 produces very little changes
|
||||
|
||||
// init
|
||||
if (SEGENV.call == 0) {
|
||||
@@ -7657,28 +7660,28 @@ uint16_t mode_2Dsoap() {
|
||||
*noise32_x = random16();
|
||||
*noise32_y = random16();
|
||||
*noise32_z = random16();
|
||||
for (int i = 0; i < cols; i++) {
|
||||
int32_t ioffset = scale32_x * (i - cols / 2);
|
||||
for (int j = 0; j < rows; j++) {
|
||||
int32_t joffset = scale32_y * (j - rows / 2);
|
||||
uint8_t data = inoise16(*noise32_x + ioffset, *noise32_y + joffset, *noise32_z) >> 8;
|
||||
noise3d[XY(i,j)] = scale8(noise3d[XY(i,j)], SEGMENT.intensity) + scale8(data, 255 - SEGMENT.intensity);
|
||||
SEGMENT.setPixelColorXY(i, j, ColorFromPalette(SEGPALETTE,~noise3d[XY(i,j)]*3));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*noise32_x += mov;
|
||||
*noise32_y += mov;
|
||||
*noise32_z += mov;
|
||||
}
|
||||
|
||||
uint32_t mov = MAX(cols,rows)*(SEGMENT.speed+1)/2;
|
||||
*noise32_x += mov;
|
||||
*noise32_y += mov;
|
||||
*noise32_z += mov;
|
||||
|
||||
for (int i = 0; i < cols; i++) {
|
||||
int32_t ioffset = scale32_x * (i - cols / 2);
|
||||
for (int j = 0; j < rows; j++) {
|
||||
int32_t joffset = scale32_y * (j - rows / 2);
|
||||
uint8_t data = inoise16(*noise32_x + ioffset, *noise32_y + joffset, *noise32_z) >> 8;
|
||||
noise3d[XY(i,j)] = scale8(noise3d[XY(i,j)], SEGMENT.intensity) + scale8(data, 256 - SEGMENT.intensity);
|
||||
noise3d[XY(i,j)] = scale8(noise3d[XY(i,j)], smoothness) + scale8(data, 255 - smoothness);
|
||||
}
|
||||
}
|
||||
// init also if dimensions changed
|
||||
if (SEGENV.call == 0 || SEGMENT.aux0 != cols || SEGMENT.aux1 != rows) {
|
||||
SEGMENT.aux0 = cols;
|
||||
SEGMENT.aux1 = rows;
|
||||
for (int i = 0; i < cols; i++) {
|
||||
for (int j = 0; j < rows; j++) {
|
||||
SEGMENT.setPixelColorXY(i, j, ColorFromPalette(SEGPALETTE,~noise3d[XY(i,j)]*3));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7740,6 +7743,85 @@ uint16_t mode_2Dsoap() {
|
||||
}
|
||||
static const char _data_FX_MODE_2DSOAP[] PROGMEM = "Soap@!,Smoothness;;!;2";
|
||||
|
||||
|
||||
//Idea from https://www.youtube.com/watch?v=HsA-6KIbgto&ab_channel=GreatScott%21
|
||||
//Octopus (https://editor.soulmatelights.com/gallery/671-octopus)
|
||||
//Stepko and Sutaburosu
|
||||
// adapted for WLED by @blazoncek
|
||||
uint16_t mode_2Doctopus() {
|
||||
if (!strip.isMatrix) return mode_static(); // not a 2D set-up
|
||||
|
||||
const uint16_t cols = SEGMENT.virtualWidth();
|
||||
const uint16_t rows = SEGMENT.virtualHeight();
|
||||
const uint8_t mapp = 180 / MAX(cols,rows);
|
||||
|
||||
typedef struct {
|
||||
uint8_t angle;
|
||||
uint8_t radius;
|
||||
} map_t;
|
||||
|
||||
const size_t dataSize = SEGMENT.width() * SEGMENT.height() * sizeof(map_t); // prevent reallocation if mirrored or grouped
|
||||
if (!SEGENV.allocateData(dataSize + 2)) return mode_static(); //allocation failed
|
||||
|
||||
map_t *rMap = reinterpret_cast<map_t*>(SEGENV.data);
|
||||
uint8_t *offsX = reinterpret_cast<uint8_t*>(SEGENV.data + dataSize);
|
||||
uint8_t *offsY = reinterpret_cast<uint8_t*>(SEGENV.data + dataSize + 1);
|
||||
|
||||
// re-init if SEGMENT dimensions or offset changed
|
||||
if (SEGENV.call == 0 || SEGENV.aux0 != cols || SEGENV.aux1 != rows || SEGMENT.custom1 != *offsX || SEGMENT.custom2 != *offsY) {
|
||||
SEGENV.step = 0; // t
|
||||
SEGENV.aux0 = cols;
|
||||
SEGENV.aux1 = rows;
|
||||
*offsX = SEGMENT.custom1;
|
||||
*offsY = SEGMENT.custom2;
|
||||
const uint8_t C_X = cols / 2 + (SEGMENT.custom1 - 128)*cols/255;
|
||||
const uint8_t C_Y = rows / 2 + (SEGMENT.custom2 - 128)*rows/255;
|
||||
for (int x = 0; x < cols; x++) {
|
||||
for (int y = 0; y < rows; y++) {
|
||||
rMap[XY(x, y)].angle = 40.7436f * atan2f(y - C_Y, x - C_X); // avoid 128*atan2()/PI
|
||||
rMap[XY(x, y)].radius = hypotf(x - C_X, y - C_Y) * mapp; //thanks Sutaburosu
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SEGENV.step += SEGMENT.speed / 32 + 1; // 1-4 range
|
||||
for (int x = 0; x < cols; x++) {
|
||||
for (int y = 0; y < rows; y++) {
|
||||
byte angle = rMap[XY(x,y)].angle;
|
||||
byte radius = rMap[XY(x,y)].radius;
|
||||
//CRGB c = CHSV(SEGENV.step / 2 - radius, 255, sin8(sin8((angle * 4 - radius) / 4 + SEGENV.step) + radius - SEGENV.step * 2 + angle * (SEGMENT.custom3/3+1)));
|
||||
uint16_t intensity = sin8(sin8((angle * 4 - radius) / 4 + SEGENV.step/2) + radius - SEGENV.step + angle * (SEGMENT.custom3/4+1));
|
||||
intensity = map(intensity*intensity, 0, 65535, 0, 255); // add a bit of non-linearity for cleaner display
|
||||
CRGB c = ColorFromPalette(SEGPALETTE, SEGENV.step / 2 - radius, intensity);
|
||||
SEGMENT.setPixelColorXY(x, y, c);
|
||||
}
|
||||
}
|
||||
return FRAMETIME;
|
||||
}
|
||||
static const char _data_FX_MODE_2DOCTOPUS[] PROGMEM = "Octopus@!,,Offset X,Offset Y,Legs;;!;2;";
|
||||
|
||||
|
||||
//Waving Cell
|
||||
//@Stepko (https://editor.soulmatelights.com/gallery/1704-wavingcells)
|
||||
// adapted for WLED by @blazoncek
|
||||
uint16_t mode_2Dwavingcell() {
|
||||
if (!strip.isMatrix) return mode_static(); // not a 2D set-up
|
||||
|
||||
const uint16_t cols = SEGMENT.virtualWidth();
|
||||
const uint16_t rows = SEGMENT.virtualHeight();
|
||||
|
||||
uint32_t t = millis()/(257-SEGMENT.speed);
|
||||
uint8_t aX = SEGMENT.custom1/16 + 9;
|
||||
uint8_t aY = SEGMENT.custom2/16 + 1;
|
||||
uint8_t aZ = SEGMENT.custom3 + 1;
|
||||
for (int x = 0; x < cols; x++) for (int y = 0; y <rows; y++)
|
||||
SEGMENT.setPixelColorXY(x, y, ColorFromPalette(SEGPALETTE, ((sin8((x*aX)+sin8((y+t)*aY))+cos8(y*aZ))+1)+t));
|
||||
|
||||
return FRAMETIME;
|
||||
}
|
||||
static const char _data_FX_MODE_2DWAVINGCELL[] PROGMEM = "Waving Cell@!,,Amplitude 1,Amplitude 2,Amplitude 3;;!;2";
|
||||
|
||||
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
|
||||
@@ -7974,6 +8056,8 @@ void WS2812FX::setupEffectData() {
|
||||
addEffect(FX_MODE_2DDNASPIRAL, &mode_2DDNASpiral, _data_FX_MODE_2DDNASPIRAL);
|
||||
addEffect(FX_MODE_2DBLACKHOLE, &mode_2DBlackHole, _data_FX_MODE_2DBLACKHOLE);
|
||||
addEffect(FX_MODE_2DSOAP, &mode_2Dsoap, _data_FX_MODE_2DSOAP);
|
||||
addEffect(FX_MODE_2DOCTOPUS, &mode_2Doctopus, _data_FX_MODE_2DOCTOPUS);
|
||||
addEffect(FX_MODE_2DWAVINGCELL, &mode_2Dwavingcell, _data_FX_MODE_2DWAVINGCELL);
|
||||
|
||||
addEffect(FX_MODE_2DAKEMI, &mode_2DAkemi, _data_FX_MODE_2DAKEMI); // audio
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
@@ -268,6 +268,8 @@
|
||||
#define FX_MODE_2DDRIFTROSE 123 //gap fill
|
||||
#define FX_MODE_2DDISTORTIONWAVES 124 //gap fill
|
||||
#define FX_MODE_2DSOAP 125 //gap fill
|
||||
#define FX_MODE_2DOCTOPUS 126 //gap fill
|
||||
#define FX_MODE_2DWAVINGCELL 127 //gap fill
|
||||
|
||||
// WLED-SR effects (SR compatible IDs !!!)
|
||||
#define FX_MODE_PIXELS 128
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
#define BTN_TYPE_ANALOG_INVERTED 8
|
||||
|
||||
//Ethernet board types
|
||||
#define WLED_NUM_ETH_TYPES 10
|
||||
#define WLED_NUM_ETH_TYPES 11
|
||||
|
||||
#define WLED_ETH_NONE 0
|
||||
#define WLED_ETH_WT32_ETH01 1
|
||||
@@ -285,7 +285,10 @@
|
||||
#define WLED_ETH_QUINLED 4
|
||||
#define WLED_ETH_TWILIGHTLORD 5
|
||||
#define WLED_ETH_ESP32DEUX 6
|
||||
#define WLED_ETH_ESP32ETHKITVE 7
|
||||
#define WLED_ETH_QUINLED_OCTA 8
|
||||
#define WLED_ETH_ABCWLEDV43ETH 9
|
||||
#define WLED_ETH_SERG74 10
|
||||
|
||||
//Hue error codes
|
||||
#define HUE_ERROR_INACTIVE 0
|
||||
|
||||
@@ -192,6 +192,7 @@
|
||||
<option value="7">KIT-VE</option>
|
||||
<option value="8">QuinLED-Dig-Octa</option>
|
||||
<option value="4">QuinLED-ESP32</option>
|
||||
<option value="10">Serg74-ETH32</option>
|
||||
<option value="5">TwilightLord-ESP32</option>
|
||||
<option value="3">WESP32</option>
|
||||
<option value="1">WT32-ETH01</option>
|
||||
|
||||
@@ -44,43 +44,43 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()=====";
|
||||
const uint16_t PAGE_update_length = 607;
|
||||
const uint8_t PAGE_update[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0xd1, 0x6e, 0xd3, 0x30,
|
||||
0x14, 0x7d, 0xcf, 0x57, 0x78, 0x7e, 0x6a, 0x25, 0xea, 0x6c, 0xd3, 0x78, 0xa0, 0x38, 0x19, 0x2a,
|
||||
0x14, 0x7d, 0xcf, 0x57, 0x78, 0x7e, 0x6a, 0x25, 0xea, 0x6c, 0x13, 0x7b, 0xa0, 0x24, 0x19, 0x2a,
|
||||
0x9b, 0x10, 0x12, 0xd3, 0x26, 0x6d, 0x03, 0xf1, 0x84, 0x9c, 0xf8, 0xa6, 0x31, 0x75, 0xec, 0xcc,
|
||||
0xbe, 0x69, 0x55, 0xa1, 0xfd, 0x3b, 0x37, 0x4e, 0x3b, 0x90, 0x06, 0x2f, 0x51, 0x9c, 0x9c, 0x7b,
|
||||
0x72, 0xee, 0x39, 0x27, 0xf2, 0xe4, 0xea, 0xf6, 0xe3, 0xc3, 0xf7, 0xbb, 0x6b, 0xd6, 0x62, 0x67,
|
||||
0x4b, 0x79, 0xb8, 0x82, 0xd2, 0xa5, 0xec, 0x00, 0x15, 0xab, 0xbd, 0x43, 0x70, 0x58, 0xf0, 0x9d,
|
||||
0xd1, 0xd8, 0x16, 0x1a, 0xb6, 0xa6, 0x86, 0x45, 0x3a, 0x70, 0xe6, 0x54, 0x07, 0x05, 0xdf, 0x1a,
|
||||
0xd8, 0xf5, 0x3e, 0x20, 0x2f, 0x33, 0x89, 0x06, 0x2d, 0x94, 0xdf, 0xbe, 0x5c, 0x5f, 0xb1, 0xc7,
|
||||
0x5e, 0x2b, 0x04, 0x99, 0x4f, 0x8f, 0x64, 0xac, 0x83, 0xe9, 0xb1, 0xcc, 0x9a, 0xc1, 0xd5, 0x68,
|
||||
0xbc, 0x63, 0xab, 0xd9, 0xfc, 0xd7, 0xce, 0x38, 0xed, 0x77, 0xa2, 0x35, 0x11, 0x7d, 0xd8, 0x8b,
|
||||
0x4a, 0xd5, 0x9b, 0xd9, 0xfc, 0xf9, 0x05, 0xf2, 0x48, 0x10, 0xed, 0xeb, 0xa1, 0x23, 0x05, 0x62,
|
||||
0x0d, 0x78, 0x6d, 0x61, 0xbc, 0x5d, 0xed, 0x3f, 0xeb, 0x19, 0x1f, 0x1a, 0x3e, 0x17, 0x11, 0xf7,
|
||||
0x16, 0x84, 0x36, 0xb1, 0xb7, 0x6a, 0x5f, 0x70, 0xe7, 0x1d, 0xf0, 0x37, 0xff, 0x1d, 0xe9, 0xe2,
|
||||
0xfa, 0xf5, 0x4c, 0x65, 0x7d, 0xbd, 0xe1, 0xcf, 0x99, 0xcc, 0x0f, 0x12, 0x0f, 0x52, 0x59, 0x0c,
|
||||
0x75, 0xc1, 0xf3, 0x08, 0x88, 0xc6, 0xad, 0x63, 0x1e, 0xc5, 0xcf, 0x78, 0xd9, 0x17, 0xef, 0x78,
|
||||
0xf9, 0x17, 0x72, 0xa4, 0x2a, 0xb3, 0x0f, 0xa6, 0x1b, 0x0d, 0x60, 0x43, 0xb0, 0x33, 0x3e, 0xd1,
|
||||
0xd7, 0x31, 0xf2, 0xf9, 0x7b, 0x42, 0x26, 0x84, 0xcc, 0x27, 0x4b, 0x2b, 0xaf, 0xf7, 0xcc, 0x3b,
|
||||
0xeb, 0x95, 0x2e, 0xf8, 0x27, 0xc0, 0xaf, 0xb3, 0x39, 0xd1, 0xb5, 0xe7, 0x65, 0x76, 0xe3, 0xbd,
|
||||
0xbb, 0xf1, 0x9a, 0x25, 0xeb, 0xee, 0x7d, 0x83, 0x3b, 0x15, 0xe0, 0xc5, 0x43, 0x42, 0xc8, 0xc6,
|
||||
0x87, 0x8e, 0x51, 0x26, 0xad, 0xa7, 0xd9, 0xbb, 0xdb, 0xfb, 0x07, 0xce, 0x54, 0xb2, 0x89, 0x44,
|
||||
0x0e, 0x09, 0xc7, 0x99, 0xa1, 0x57, 0xe4, 0x0b, 0xcb, 0x80, 0x1c, 0xdc, 0xf7, 0x14, 0x4e, 0x37,
|
||||
0x58, 0x34, 0xbd, 0x0a, 0x98, 0x8f, 0xf3, 0x0b, 0x82, 0x29, 0x4e, 0x0a, 0xe2, 0x50, 0x75, 0x86,
|
||||
0x52, 0x7d, 0x4c, 0x02, 0x62, 0xaf, 0x1c, 0xab, 0xad, 0x8a, 0xb1, 0xe0, 0xd1, 0xf4, 0xbc, 0x3c,
|
||||
0x15, 0x67, 0x17, 0xe2, 0x74, 0x51, 0x9d, 0xbd, 0x15, 0xe7, 0x17, 0xa3, 0x33, 0x04, 0x20, 0xf5,
|
||||
0xa1, 0xbc, 0xf2, 0xbb, 0xa4, 0x9e, 0x61, 0x0b, 0xcc, 0xd2, 0x37, 0x23, 0xb2, 0x00, 0x16, 0x54,
|
||||
0x84, 0x25, 0x93, 0x8a, 0x65, 0x6d, 0x80, 0xa6, 0xe0, 0x2d, 0x62, 0x1f, 0x97, 0x79, 0xbe, 0x36,
|
||||
0xd8, 0x0e, 0x95, 0xa8, 0x7d, 0x97, 0x1f, 0x16, 0x1c, 0x2c, 0xc4, 0x7c, 0x5c, 0x32, 0x3f, 0x8c,
|
||||
0x45, 0xce, 0x50, 0x05, 0x4a, 0xaa, 0xe0, 0x3f, 0x2a, 0xab, 0xdc, 0x86, 0xf4, 0x98, 0x6e, 0xcd,
|
||||
0xb2, 0x64, 0xff, 0x91, 0x88, 0x9e, 0x88, 0xd8, 0x1a, 0xb0, 0x3a, 0x0a, 0xe3, 0x0f, 0xbc, 0x47,
|
||||
0x8a, 0x57, 0xdc, 0x22, 0x6e, 0xd7, 0x97, 0xc9, 0xf9, 0xa2, 0x21, 0x91, 0x8b, 0xf8, 0x34, 0x90,
|
||||
0x9b, 0x63, 0x3f, 0x73, 0x95, 0xd6, 0x90, 0xc6, 0xf5, 0x03, 0xb2, 0xc9, 0xa2, 0xc6, 0x58, 0x38,
|
||||
0x76, 0xf9, 0x68, 0x64, 0x80, 0xa7, 0xc1, 0x04, 0xd0, 0x13, 0xba, 0x1a, 0x10, 0xa9, 0x8e, 0x13,
|
||||
0x7c, 0xb2, 0x8e, 0xc8, 0xa6, 0x70, 0x4e, 0x64, 0x3e, 0xbd, 0xfe, 0x07, 0x74, 0x3a, 0x8c, 0x7e,
|
||||
0xd7, 0xd6, 0xd4, 0x9b, 0x82, 0xaf, 0x46, 0xbb, 0x57, 0xd4, 0xf2, 0x3f, 0x43, 0x29, 0x97, 0x52,
|
||||
0x6a, 0xb3, 0xcd, 0x52, 0x7c, 0x63, 0x47, 0x89, 0xa6, 0x4c, 0xec, 0x54, 0x3c, 0x21, 0x04, 0x81,
|
||||
0x13, 0xf9, 0x5d, 0xda, 0x96, 0x69, 0xcf, 0x9c, 0x47, 0xca, 0xcb, 0xd3, 0xc1, 0x07, 0xd2, 0xda,
|
||||
0x04, 0x88, 0x6d, 0x8a, 0xa4, 0x57, 0x6b, 0x60, 0xcb, 0xb9, 0xcc, 0x89, 0x6f, 0x5c, 0x77, 0x2c,
|
||||
0xdc, 0xd8, 0xbe, 0xf1, 0xb7, 0xfe, 0x0d, 0x69, 0x67, 0xdf, 0xb7, 0xec, 0x03, 0x00, 0x00
|
||||
0xbe, 0x69, 0x55, 0xa1, 0xfd, 0x3b, 0xd7, 0x4e, 0x3b, 0x90, 0x06, 0x2f, 0x51, 0x9c, 0x9c, 0x7b,
|
||||
0x72, 0xee, 0x39, 0x27, 0xc5, 0xc9, 0xd5, 0xed, 0xc7, 0x87, 0xef, 0x77, 0xd7, 0xac, 0xc3, 0xde,
|
||||
0x54, 0xc5, 0xe1, 0x0a, 0x52, 0x55, 0x45, 0x0f, 0x28, 0x59, 0xe3, 0x2c, 0x82, 0xc5, 0x92, 0xef,
|
||||
0xb4, 0xc2, 0xae, 0x54, 0xb0, 0xd5, 0x0d, 0x2c, 0xd2, 0x81, 0x33, 0x2b, 0x7b, 0x28, 0xf9, 0x56,
|
||||
0xc3, 0x6e, 0x70, 0x1e, 0x79, 0x95, 0x15, 0xa8, 0xd1, 0x40, 0xf5, 0xed, 0xcb, 0xf5, 0x15, 0x7b,
|
||||
0x1c, 0x94, 0x44, 0x28, 0xf2, 0xe9, 0x51, 0x11, 0x1a, 0xaf, 0x07, 0xac, 0xb2, 0x76, 0xb4, 0x0d,
|
||||
0x6a, 0x67, 0xd9, 0x6a, 0x36, 0xff, 0xb5, 0xd3, 0x56, 0xb9, 0x9d, 0xe8, 0x74, 0x40, 0xe7, 0xf7,
|
||||
0xa2, 0x96, 0xcd, 0x66, 0x36, 0x7f, 0x7e, 0x81, 0x3c, 0x12, 0x44, 0xb9, 0x66, 0xec, 0x49, 0x81,
|
||||
0x58, 0x03, 0x5e, 0x1b, 0x88, 0xb7, 0xab, 0xfd, 0x67, 0x35, 0xe3, 0x63, 0xcb, 0xe7, 0x22, 0xe0,
|
||||
0xde, 0x80, 0x50, 0x3a, 0x0c, 0x46, 0xee, 0x4b, 0x6e, 0x9d, 0x05, 0xfe, 0xe6, 0xbf, 0x23, 0x7d,
|
||||
0x58, 0xbf, 0x9e, 0xa9, 0x8d, 0x6b, 0x36, 0xfc, 0x39, 0x2b, 0xf2, 0x83, 0xc4, 0x83, 0x54, 0x16,
|
||||
0x7c, 0x53, 0xf2, 0x3c, 0x00, 0xa2, 0xb6, 0xeb, 0x90, 0x07, 0xf1, 0x33, 0x5c, 0x0e, 0xe5, 0x3b,
|
||||
0x5e, 0xfd, 0x85, 0x8c, 0x54, 0x55, 0xf6, 0x41, 0xf7, 0xd1, 0x00, 0x36, 0x7a, 0x33, 0xe3, 0x13,
|
||||
0x7d, 0x13, 0x02, 0x9f, 0xbf, 0x27, 0x64, 0x42, 0x14, 0xf9, 0x64, 0x69, 0xed, 0xd4, 0x9e, 0x39,
|
||||
0x6b, 0x9c, 0x54, 0x25, 0xff, 0x04, 0xf8, 0x75, 0x36, 0x27, 0xba, 0xee, 0xbc, 0xca, 0x6e, 0x9c,
|
||||
0xb3, 0x37, 0x4e, 0xb1, 0x64, 0xdd, 0xbd, 0x6b, 0x71, 0x27, 0x3d, 0xbc, 0x78, 0x48, 0x88, 0xa2,
|
||||
0x75, 0xbe, 0x67, 0x94, 0x49, 0xe7, 0x68, 0xf6, 0xee, 0xf6, 0xfe, 0x81, 0x33, 0x99, 0x6c, 0x22,
|
||||
0x91, 0x63, 0xc2, 0x71, 0xa6, 0xe9, 0x15, 0xf9, 0xc2, 0x32, 0x20, 0x07, 0xf7, 0x03, 0x85, 0xd3,
|
||||
0x8f, 0x06, 0xf5, 0x20, 0x3d, 0xe6, 0x71, 0x7e, 0x41, 0x30, 0xc9, 0x49, 0x41, 0x18, 0xeb, 0x5e,
|
||||
0x53, 0xaa, 0x8f, 0x49, 0x40, 0x18, 0xa4, 0x65, 0x8d, 0x91, 0x21, 0x94, 0x3c, 0xe8, 0x81, 0x57,
|
||||
0xa7, 0xe2, 0xec, 0xad, 0x38, 0x5d, 0xd4, 0x67, 0x17, 0xe2, 0xfc, 0x22, 0x3a, 0x43, 0x00, 0x52,
|
||||
0xef, 0xab, 0x2b, 0xb7, 0x4b, 0xea, 0x19, 0x76, 0xc0, 0x0c, 0x7d, 0x33, 0x20, 0xf3, 0x60, 0x40,
|
||||
0x06, 0x58, 0xb2, 0x42, 0xb2, 0xac, 0xf3, 0xd0, 0x96, 0xbc, 0x43, 0x1c, 0xc2, 0x32, 0xcf, 0xd7,
|
||||
0x1a, 0xbb, 0xb1, 0x16, 0x8d, 0xeb, 0xf3, 0xc3, 0x82, 0xa3, 0x81, 0x90, 0xc7, 0x25, 0xf3, 0xc3,
|
||||
0x58, 0xe0, 0x0c, 0xa5, 0xa7, 0xa4, 0x4a, 0xfe, 0xa3, 0x36, 0xd2, 0x6e, 0x48, 0x8f, 0xee, 0xd7,
|
||||
0x2c, 0x4b, 0xf6, 0x1f, 0x89, 0xe8, 0x89, 0x08, 0x9d, 0x06, 0xa3, 0x82, 0xd0, 0xee, 0xc0, 0x7b,
|
||||
0xa4, 0x78, 0xc5, 0x2d, 0xc2, 0x76, 0x7d, 0x99, 0x9c, 0x2f, 0x5b, 0x12, 0xb9, 0x08, 0x4f, 0x23,
|
||||
0xb9, 0x19, 0xfb, 0x99, 0xcb, 0xb4, 0x46, 0xa1, 0xed, 0x30, 0x22, 0x9b, 0x2c, 0x6a, 0xb5, 0x81,
|
||||
0x63, 0x97, 0x8f, 0x46, 0x7a, 0x78, 0x1a, 0xb5, 0x07, 0x35, 0xa1, 0xeb, 0x11, 0x91, 0xea, 0x38,
|
||||
0xc1, 0x27, 0xeb, 0x88, 0x6c, 0x0a, 0xe7, 0xa4, 0xc8, 0xa7, 0xd7, 0xff, 0x80, 0x4e, 0x87, 0xe8,
|
||||
0x77, 0x63, 0x74, 0xb3, 0x29, 0xf9, 0x2a, 0xda, 0xbd, 0xa2, 0x96, 0xff, 0x19, 0x4a, 0xb9, 0x54,
|
||||
0x85, 0xd2, 0xdb, 0x2c, 0xc5, 0x17, 0x3b, 0x4a, 0x34, 0x55, 0x62, 0xa7, 0xe2, 0x09, 0x21, 0x08,
|
||||
0x9c, 0xc8, 0xef, 0xd2, 0xb6, 0x4c, 0x39, 0x66, 0x1d, 0x52, 0x5e, 0x8e, 0x0e, 0xce, 0x93, 0xd6,
|
||||
0xd6, 0x43, 0xe8, 0x52, 0x24, 0x83, 0x5c, 0x03, 0x5b, 0xce, 0x8b, 0x9c, 0xf8, 0xe2, 0xba, 0xb1,
|
||||
0x70, 0xb1, 0x7d, 0xf1, 0xb7, 0xfe, 0x0d, 0x82, 0x92, 0x04, 0xb1, 0xec, 0x03, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -151,142 +151,143 @@ const uint8_t PAGE_settings[] PROGMEM = {
|
||||
|
||||
|
||||
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
|
||||
const uint16_t PAGE_settings_wifi_length = 2140;
|
||||
const uint16_t PAGE_settings_wifi_length = 2147;
|
||||
const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x58, 0x7b, 0x6f, 0xdb, 0x38,
|
||||
0x12, 0xff, 0xdf, 0x9f, 0x82, 0xe1, 0x1d, 0x02, 0x09, 0x51, 0xe4, 0x38, 0xde, 0xf6, 0x7a, 0x89,
|
||||
0xe5, 0x5e, 0x1e, 0xde, 0x26, 0x77, 0x69, 0xea, 0x83, 0x83, 0x06, 0x87, 0x5e, 0xb1, 0xab, 0x48,
|
||||
0x63, 0x9b, 0x8d, 0x44, 0xea, 0x44, 0xca, 0x4e, 0x90, 0xfa, 0xbb, 0xdf, 0x0c, 0x29, 0x3f, 0x13,
|
||||
0x77, 0x17, 0x45, 0x50, 0xb4, 0x15, 0xc9, 0xe1, 0x3c, 0x7f, 0xf3, 0xa0, 0x3b, 0x3b, 0xe7, 0x9f,
|
||||
0xce, 0x6e, 0xfe, 0xd3, 0xef, 0xb1, 0xb1, 0xc9, 0xb3, 0x6e, 0x87, 0xfe, 0x65, 0x59, 0x2c, 0x47,
|
||||
0x11, 0x07, 0xc9, 0x71, 0x0d, 0x71, 0xda, 0xed, 0xe4, 0x60, 0x62, 0x96, 0x8c, 0xe3, 0x52, 0x83,
|
||||
0x89, 0x78, 0x65, 0x86, 0xfb, 0xef, 0x78, 0xbd, 0xdb, 0x90, 0x71, 0x0e, 0x11, 0x9f, 0x08, 0x98,
|
||||
0x16, 0xaa, 0x34, 0x9c, 0x25, 0x4a, 0x1a, 0x90, 0x48, 0x36, 0x15, 0xa9, 0x19, 0x47, 0x6f, 0x0e,
|
||||
0x0e, 0x16, 0xa4, 0x1b, 0x47, 0x29, 0x4c, 0x44, 0x02, 0xfb, 0x76, 0x11, 0x08, 0x29, 0x8c, 0x88,
|
||||
0xb3, 0x7d, 0x9d, 0xc4, 0x19, 0x44, 0xad, 0x20, 0x8f, 0x1f, 0x44, 0x5e, 0xe5, 0x8b, 0x75, 0xa5,
|
||||
0xa1, 0xb4, 0x8b, 0xf8, 0x0e, 0xd7, 0x52, 0xf1, 0x67, 0x92, 0xbb, 0x1d, 0x23, 0x4c, 0x06, 0xdd,
|
||||
0x5b, 0xf1, 0xab, 0x60, 0x03, 0x30, 0x46, 0xc8, 0x91, 0xee, 0x34, 0xdd, 0x66, 0x47, 0x27, 0xa5,
|
||||
0x28, 0x4c, 0xb7, 0x31, 0x89, 0x4b, 0x96, 0xa9, 0x44, 0x14, 0x41, 0x1a, 0xa5, 0x2a, 0xa9, 0x72,
|
||||
0x54, 0x28, 0xc0, 0x8d, 0x68, 0xa7, 0x15, 0x20, 0x7b, 0x79, 0xa5, 0x54, 0xa1, 0xa3, 0x83, 0xa0,
|
||||
0x28, 0x61, 0x80, 0xcb, 0xc1, 0xe0, 0xf2, 0x3c, 0xe2, 0xfc, 0x78, 0x58, 0xc9, 0xc4, 0x08, 0x25,
|
||||
0xd9, 0xe8, 0x32, 0xf5, 0xc0, 0x7f, 0x2a, 0xc1, 0x54, 0xa5, 0x64, 0x69, 0x38, 0x02, 0xd3, 0xcb,
|
||||
0x80, 0xb8, 0x9c, 0x3e, 0xda, 0xa3, 0xd9, 0x82, 0x34, 0xe9, 0xad, 0x51, 0x26, 0x25, 0xc4, 0x06,
|
||||
0x6a, 0xe2, 0x35, 0xc2, 0x0b, 0xcf, 0x7f, 0x9a, 0x0a, 0x99, 0xaa, 0x69, 0xa8, 0x0a, 0x90, 0x1e,
|
||||
0x1f, 0x1b, 0x53, 0xe8, 0xa3, 0x66, 0x33, 0xcf, 0xc3, 0x7b, 0xa9, 0xc2, 0x69, 0x06, 0x24, 0xa8,
|
||||
0x39, 0x44, 0x06, 0x55, 0x09, 0xba, 0xa9, 0x6b, 0xeb, 0x9a, 0x7f, 0x99, 0x8a, 0xa1, 0xd8, 0x9f,
|
||||
0x2f, 0xf9, 0x0a, 0xcf, 0xd3, 0x4d, 0x9e, 0x8b, 0x4b, 0x3c, 0xe0, 0xbf, 0x69, 0xc8, 0x86, 0xab,
|
||||
0xd4, 0xd7, 0x48, 0x8d, 0xd1, 0xd1, 0x86, 0x41, 0xe4, 0xa1, 0x37, 0xde, 0x5b, 0x15, 0x50, 0x03,
|
||||
0xbe, 0x67, 0x9d, 0x75, 0xc4, 0xb9, 0xbf, 0xc7, 0x9b, 0xdf, 0xb4, 0x92, 0x4d, 0x09, 0x86, 0x07,
|
||||
0x26, 0x22, 0x47, 0x70, 0xf2, 0x18, 0xf7, 0x8f, 0x4d, 0x98, 0x0a, 0x4d, 0x81, 0x49, 0xa3, 0x9d,
|
||||
0x83, 0xc0, 0x84, 0x42, 0x4a, 0x28, 0x2f, 0x6e, 0x3e, 0x5e, 0x45, 0x9c, 0x9c, 0x28, 0x51, 0x6c,
|
||||
0x18, 0x86, 0x3c, 0x18, 0x82, 0x49, 0xc6, 0x68, 0x7a, 0x68, 0xc6, 0xa8, 0x12, 0x44, 0x5d, 0x08,
|
||||
0x89, 0xa5, 0xe7, 0x2f, 0x77, 0x3e, 0xdd, 0x7d, 0x83, 0xc4, 0x84, 0xb1, 0xd6, 0x62, 0x24, 0xbd,
|
||||
0xa7, 0x59, 0xf0, 0x84, 0xf2, 0xa6, 0xaa, 0xbc, 0xd7, 0x47, 0x5f, 0xbe, 0xce, 0x02, 0xbc, 0x3b,
|
||||
0x5f, 0x87, 0x1a, 0xa3, 0xee, 0x79, 0x10, 0x18, 0x3f, 0xea, 0x9a, 0xb0, 0xc4, 0x1b, 0xfb, 0x60,
|
||||
0xff, 0xf3, 0xc3, 0x12, 0xd2, 0x2a, 0x81, 0xf9, 0xa1, 0x07, 0x48, 0x9b, 0x83, 0x13, 0x88, 0xe7,
|
||||
0x69, 0x14, 0x45, 0xc6, 0x7e, 0xf8, 0xdf, 0xbf, 0x43, 0x58, 0x54, 0x7a, 0xec, 0x19, 0x1f, 0x79,
|
||||
0x07, 0x5f, 0xbe, 0xae, 0xa8, 0xf2, 0x24, 0x86, 0xde, 0x01, 0x92, 0x42, 0x98, 0x81, 0x1c, 0x99,
|
||||
0xf1, 0xee, 0xee, 0x02, 0x20, 0x9d, 0xd6, 0x81, 0x5f, 0x07, 0x76, 0xb1, 0xb7, 0xb7, 0x17, 0x4c,
|
||||
0x94, 0x48, 0x19, 0xfa, 0xf9, 0x46, 0xe4, 0xa0, 0x2a, 0xe3, 0x5d, 0x07, 0x2d, 0x68, 0xfb, 0xc7,
|
||||
0x2b, 0xb8, 0x3a, 0xce, 0xc0, 0x30, 0xe9, 0x9c, 0x77, 0x36, 0x40, 0xd7, 0xa1, 0x0c, 0xe9, 0x3f,
|
||||
0xd1, 0xae, 0x89, 0x10, 0x30, 0x1c, 0x23, 0x83, 0xf6, 0x5b, 0x9f, 0x22, 0xa3, 0x13, 0x63, 0x4a,
|
||||
0x71, 0x57, 0x19, 0xf0, 0xb8, 0x48, 0x31, 0x70, 0x74, 0x25, 0xd8, 0x3c, 0xa1, 0x3c, 0xd8, 0x76,
|
||||
0xa6, 0x24, 0xa6, 0xad, 0x1c, 0xd1, 0xf9, 0x8d, 0xe7, 0x23, 0xc1, 0x2a, 0xae, 0x65, 0x38, 0x89,
|
||||
0xb3, 0x0a, 0x8e, 0x87, 0xaa, 0xf4, 0x48, 0x03, 0x40, 0xfd, 0xa0, 0x63, 0xc2, 0x64, 0x2c, 0xb2,
|
||||
0xb4, 0x04, 0x59, 0xdb, 0x7d, 0x0c, 0x7b, 0x7b, 0x3e, 0x3a, 0x18, 0x72, 0x35, 0x81, 0x33, 0x3a,
|
||||
0xf3, 0x96, 0x34, 0x5f, 0xe0, 0xab, 0xbf, 0x60, 0xa0, 0x90, 0x81, 0xea, 0xcc, 0xfd, 0x75, 0xac,
|
||||
0xf0, 0x5e, 0x0d, 0x2b, 0x61, 0x8d, 0x53, 0x05, 0xa1, 0x8d, 0xac, 0xde, 0x50, 0xd3, 0xea, 0xc1,
|
||||
0x03, 0xf8, 0xa2, 0xbe, 0xba, 0xb8, 0x04, 0x62, 0x05, 0x44, 0xbf, 0xff, 0xf5, 0x69, 0x71, 0x32,
|
||||
0x63, 0x5e, 0xbd, 0xa2, 0x48, 0xcf, 0x58, 0x7a, 0x9a, 0xfb, 0xbf, 0x2f, 0x2f, 0x62, 0xb8, 0x6a,
|
||||
0xab, 0x76, 0x77, 0x37, 0x85, 0x38, 0xd7, 0x02, 0xf9, 0x71, 0xf1, 0x49, 0x1e, 0x8b, 0x0b, 0x4c,
|
||||
0x90, 0xd4, 0x19, 0x26, 0xfc, 0x99, 0x53, 0x58, 0xad, 0x2b, 0xac, 0x5e, 0x56, 0x98, 0xef, 0x9c,
|
||||
0x61, 0xd6, 0x05, 0x6a, 0x15, 0xf1, 0x9f, 0x10, 0x3f, 0x25, 0xab, 0x51, 0x6a, 0x61, 0xbf, 0x2e,
|
||||
0x42, 0xf9, 0x81, 0x44, 0x67, 0x16, 0x59, 0x9c, 0xc0, 0xad, 0x30, 0x04, 0xbd, 0xd9, 0x6a, 0x02,
|
||||
0xb5, 0x9e, 0x27, 0x10, 0x9f, 0xad, 0xe4, 0x2a, 0xc6, 0xf1, 0xc9, 0x45, 0x6b, 0x0d, 0x45, 0x3b,
|
||||
0xf0, 0xfd, 0xbb, 0x55, 0x67, 0x07, 0x01, 0x6b, 0xd5, 0xab, 0x11, 0x7a, 0xbc, 0x04, 0x97, 0x90,
|
||||
0x45, 0xe5, 0xb0, 0x65, 0x1e, 0x0b, 0xac, 0x9d, 0x06, 0x1e, 0x28, 0x97, 0x43, 0xf4, 0x1b, 0xf1,
|
||||
0xc1, 0x2f, 0x57, 0x53, 0xdd, 0xf7, 0xba, 0xc5, 0x58, 0x90, 0x5d, 0x58, 0x79, 0xd0, 0x3e, 0x24,
|
||||
0xb7, 0x59, 0x19, 0xd1, 0x0a, 0x9e, 0x02, 0xd8, 0x34, 0x6b, 0xa1, 0x73, 0xa6, 0xe2, 0xf4, 0x9f,
|
||||
0x03, 0x4a, 0x47, 0x2c, 0x10, 0x4e, 0x7d, 0xe9, 0xe0, 0x6e, 0xcb, 0x32, 0xaa, 0x24, 0x37, 0x83,
|
||||
0x55, 0x26, 0x9c, 0x32, 0x72, 0x73, 0x9f, 0x14, 0x47, 0xbf, 0x93, 0xe6, 0xcd, 0x6f, 0xf1, 0x24,
|
||||
0x9e, 0x33, 0x78, 0x46, 0x18, 0xeb, 0x47, 0x89, 0x2c, 0x30, 0xaf, 0xd3, 0xf0, 0x4e, 0xa5, 0x8f,
|
||||
0x6b, 0x31, 0x90, 0x44, 0x1f, 0xa7, 0x69, 0x6f, 0x82, 0xb5, 0xf8, 0x4a, 0x68, 0x6c, 0x4b, 0x50,
|
||||
0x7a, 0x9c, 0xd4, 0xe4, 0x81, 0x87, 0x25, 0xe3, 0xe9, 0x03, 0x98, 0xcf, 0x9e, 0x3f, 0x7b, 0x99,
|
||||
0x0e, 0xca, 0x52, 0x95, 0xa8, 0x1e, 0xd2, 0x11, 0x5a, 0x54, 0x86, 0x90, 0x57, 0x23, 0x8f, 0xf7,
|
||||
0x68, 0x9f, 0xd5, 0xf6, 0x62, 0xd1, 0x63, 0x43, 0x91, 0x81, 0x35, 0x03, 0x9b, 0x18, 0x16, 0x2b,
|
||||
0x7e, 0x55, 0xef, 0xab, 0x21, 0xf5, 0xc9, 0xa1, 0x18, 0x55, 0x65, 0x6c, 0x1d, 0xe4, 0xcc, 0x60,
|
||||
0xc3, 0x58, 0x50, 0xad, 0xff, 0xaf, 0xbc, 0x94, 0x89, 0xca, 0x0b, 0xf4, 0x13, 0xb0, 0x22, 0x1e,
|
||||
0x01, 0x4b, 0x63, 0x13, 0xef, 0x60, 0xc5, 0x5e, 0xf1, 0xe9, 0x00, 0x71, 0xc0, 0x49, 0xc0, 0x11,
|
||||
0x8f, 0xa2, 0xba, 0xd4, 0x63, 0xb1, 0xb6, 0xfc, 0xc2, 0xa2, 0x54, 0x46, 0x25, 0x2a, 0xdb, 0xdd,
|
||||
0xf5, 0x6c, 0x73, 0x3b, 0x08, 0x3c, 0x5b, 0xc8, 0x23, 0xa2, 0xc8, 0x06, 0x46, 0x95, 0xc8, 0x95,
|
||||
0x9a, 0xd7, 0xa5, 0x81, 0x9c, 0x0c, 0x4f, 0x2e, 0x0b, 0xee, 0x63, 0x39, 0xac, 0xc9, 0xf0, 0x7e,
|
||||
0x5e, 0xa0, 0xc2, 0xbf, 0x22, 0x7f, 0xf6, 0x51, 0xa5, 0x10, 0xb2, 0x7e, 0x06, 0xb1, 0x06, 0x86,
|
||||
0x8e, 0x40, 0x78, 0xdf, 0x5e, 0xf5, 0xce, 0xd9, 0x65, 0x1f, 0x55, 0x0a, 0xd6, 0x38, 0xea, 0x75,
|
||||
0x8e, 0x81, 0xe5, 0xe6, 0xfb, 0x44, 0x65, 0x11, 0xf0, 0x83, 0xe6, 0xb2, 0x68, 0x6a, 0x1a, 0x9b,
|
||||
0xc2, 0xfb, 0x22, 0x6a, 0xf1, 0x60, 0xa7, 0xe5, 0xcf, 0x1a, 0x9d, 0x66, 0xdd, 0xbb, 0x3b, 0xda,
|
||||
0x3c, 0x62, 0x2b, 0xff, 0x87, 0xc8, 0xa9, 0xdf, 0xb3, 0xaa, 0xcc, 0x10, 0x26, 0xb4, 0x15, 0x26,
|
||||
0x1a, 0xb3, 0xf0, 0x18, 0x09, 0x2d, 0x41, 0xa7, 0xe9, 0xa6, 0x16, 0x8a, 0x3a, 0x06, 0x83, 0x24,
|
||||
0x63, 0x1a, 0x61, 0xf5, 0xeb, 0x76, 0xb0, 0x50, 0xe5, 0x0d, 0x46, 0x70, 0xa7, 0xaf, 0xdf, 0x34,
|
||||
0x67, 0x0e, 0xf0, 0x83, 0x21, 0x67, 0x38, 0xa3, 0x8c, 0x15, 0x9e, 0x14, 0x4a, 0xd3, 0x30, 0x91,
|
||||
0x8a, 0x09, 0x4b, 0x32, 0xec, 0x43, 0x98, 0x26, 0x0a, 0xdd, 0x31, 0x5d, 0xdf, 0x1b, 0x43, 0x56,
|
||||
0x9c, 0xf2, 0x6e, 0xa3, 0x83, 0x68, 0x33, 0x18, 0x0d, 0x97, 0x50, 0x6e, 0xc1, 0x51, 0x6a, 0x92,
|
||||
0x89, 0xe4, 0x3e, 0xe2, 0x17, 0x24, 0xf6, 0x7d, 0xa7, 0xe9, 0x0e, 0x50, 0x35, 0x64, 0xd1, 0x7d,
|
||||
0xf9, 0x4e, 0x63, 0x71, 0xe9, 0x94, 0x2e, 0x9d, 0xc6, 0xc9, 0xfd, 0xf2, 0xde, 0xda, 0x0d, 0x5d,
|
||||
0xdd, 0xe5, 0x02, 0x75, 0x1c, 0xc4, 0x13, 0x60, 0xbb, 0xec, 0x4c, 0x61, 0xb5, 0x48, 0xcc, 0x92,
|
||||
0x78, 0x5c, 0xa2, 0x5e, 0x4e, 0xd2, 0xf8, 0xd0, 0xcd, 0x43, 0xe8, 0xdc, 0xaa, 0x40, 0xc7, 0x1c,
|
||||
0xe2, 0x56, 0xbb, 0x5b, 0xdf, 0x60, 0x46, 0x31, 0x78, 0x40, 0x54, 0x13, 0x24, 0xeb, 0x82, 0x85,
|
||||
0x34, 0xed, 0x85, 0xb8, 0xc6, 0xba, 0x86, 0xe4, 0x37, 0xdb, 0xf1, 0x97, 0xf6, 0x5d, 0x93, 0xaa,
|
||||
0x54, 0x00, 0x56, 0x54, 0x45, 0xe9, 0xd7, 0x8e, 0x99, 0xf5, 0x2e, 0xf3, 0x6c, 0x71, 0x60, 0x80,
|
||||
0x80, 0x7a, 0x24, 0x91, 0x52, 0x19, 0x42, 0x3f, 0x69, 0xe0, 0x1f, 0x11, 0x79, 0xc7, 0xd6, 0x25,
|
||||
0xb6, 0x52, 0x93, 0x58, 0x5d, 0x91, 0xe6, 0x43, 0x1e, 0x7d, 0x2e, 0x0a, 0x50, 0xc4, 0xdb, 0x87,
|
||||
0xdc, 0xca, 0x99, 0x8b, 0x29, 0x30, 0x24, 0xf8, 0x91, 0x3e, 0xe7, 0x36, 0x3f, 0x59, 0x72, 0xea,
|
||||
0xaf, 0x71, 0x7a, 0xdb, 0x76, 0x9c, 0x06, 0x06, 0xf3, 0x26, 0x41, 0x44, 0x33, 0x6c, 0x64, 0xe4,
|
||||
0xd6, 0xd8, 0xb0, 0x83, 0xd0, 0xfe, 0x61, 0x08, 0x15, 0x76, 0x7e, 0x71, 0xd6, 0x5f, 0x53, 0xb6,
|
||||
0x66, 0x77, 0x79, 0xc0, 0x6b, 0x49, 0xb2, 0xca, 0xef, 0xa0, 0xe4, 0x73, 0x7c, 0x20, 0xb4, 0x72,
|
||||
0x21, 0x23, 0x7e, 0x60, 0xc5, 0x45, 0xfc, 0xf0, 0xcd, 0x1b, 0xce, 0x4a, 0xf8, 0x5f, 0x25, 0x70,
|
||||
0x36, 0xe9, 0xb2, 0x90, 0x6d, 0xf0, 0x69, 0xbd, 0x12, 0x9f, 0xc3, 0x57, 0xe2, 0xd3, 0xfe, 0x29,
|
||||
0x3e, 0x2b, 0xae, 0x1c, 0xe1, 0xb0, 0x3b, 0x8d, 0x1f, 0x8f, 0x1a, 0x2b, 0x4e, 0x73, 0xbc, 0x3f,
|
||||
0xfc, 0xb4, 0xcf, 0x1a, 0xeb, 0x7c, 0x5e, 0xc9, 0x67, 0x1f, 0x5e, 0xc9, 0x67, 0x1f, 0x7e, 0xde,
|
||||
0x67, 0x8d, 0xda, 0x69, 0x98, 0xd9, 0x98, 0x87, 0x48, 0xa5, 0xef, 0x8f, 0x9e, 0xf9, 0x6d, 0xf0,
|
||||
0x27, 0xfc, 0xd6, 0xf8, 0xa1, 0xa2, 0x35, 0x9f, 0xd6, 0x2b, 0xf1, 0x39, 0x7c, 0x25, 0x3e, 0xed,
|
||||
0x9f, 0xe3, 0x43, 0x0e, 0xca, 0xcf, 0xaf, 0x07, 0x0c, 0x1b, 0x34, 0xbe, 0x8a, 0xf4, 0x3c, 0x75,
|
||||
0x5d, 0xa1, 0xa1, 0xac, 0x95, 0x8a, 0x11, 0x81, 0x4b, 0xdc, 0xba, 0xe9, 0xd4, 0xb2, 0x1b, 0x6b,
|
||||
0xe5, 0xa6, 0xae, 0x0d, 0x1f, 0x9f, 0x55, 0x19, 0x66, 0x5b, 0x6a, 0x46, 0xf7, 0xcf, 0x32, 0x81,
|
||||
0xbd, 0x0f, 0x4b, 0xc4, 0x11, 0xeb, 0xe8, 0x22, 0x96, 0x0b, 0x2d, 0x45, 0x81, 0x7d, 0xe0, 0x7a,
|
||||
0x59, 0xd4, 0x20, 0xc5, 0x4e, 0x84, 0x04, 0x56, 0xc1, 0xba, 0xdc, 0xda, 0x56, 0x0f, 0xec, 0x24,
|
||||
0x49, 0x48, 0xd1, 0xbe, 0x12, 0xd2, 0xd8, 0x4a, 0xdb, 0x38, 0xe9, 0x33, 0x2a, 0x8f, 0x2f, 0xea,
|
||||
0x7e, 0xd2, 0xdf, 0x5a, 0x1f, 0x9d, 0xc2, 0x27, 0xcf, 0xcb, 0xa2, 0x4d, 0xb7, 0x0b, 0x91, 0xa2,
|
||||
0xac, 0xbe, 0xa5, 0x3a, 0x62, 0x6b, 0xd7, 0x93, 0x31, 0x24, 0xf7, 0x77, 0xea, 0x61, 0xc1, 0xe2,
|
||||
0xc2, 0x15, 0x40, 0x52, 0x64, 0x5e, 0x2c, 0x9f, 0x2b, 0x43, 0x4f, 0x48, 0xff, 0x47, 0xd5, 0xb5,
|
||||
0x66, 0xd6, 0x77, 0x91, 0x5a, 0xa9, 0xae, 0xc8, 0xd4, 0xe0, 0xc0, 0x80, 0x51, 0xf4, 0xc2, 0xa7,
|
||||
0x77, 0xc1, 0xdb, 0xf6, 0xcc, 0xff, 0x8e, 0x3d, 0x83, 0xd9, 0x67, 0x79, 0xc4, 0x7b, 0x56, 0x04,
|
||||
0x4a, 0xc0, 0x40, 0x87, 0xec, 0x9d, 0xfd, 0x91, 0x21, 0x46, 0x17, 0x96, 0x7a, 0xae, 0xd6, 0x8a,
|
||||
0xc7, 0x98, 0x6d, 0x65, 0xf4, 0xa0, 0x91, 0x90, 0x1d, 0xad, 0x83, 0xe8, 0xe4, 0x6c, 0x0b, 0x88,
|
||||
0x1e, 0xe6, 0x28, 0x6a, 0xcd, 0x51, 0xd4, 0x6a, 0x6f, 0x80, 0x08, 0x4d, 0x27, 0x03, 0x35, 0x05,
|
||||
0xd6, 0x3e, 0x0c, 0xe6, 0x3c, 0xb1, 0xc1, 0x77, 0xdc, 0x13, 0x80, 0xb9, 0x69, 0x17, 0xa1, 0x48,
|
||||
0xa1, 0x9e, 0x47, 0x9a, 0x0e, 0xe2, 0x21, 0xcd, 0x43, 0x77, 0x4a, 0x61, 0x40, 0x1d, 0xed, 0xe6,
|
||||
0x9d, 0x16, 0xef, 0x9e, 0x0b, 0xbd, 0x02, 0x8e, 0x0d, 0xb2, 0x46, 0x4d, 0x87, 0xd1, 0x3b, 0xc9,
|
||||
0xb0, 0x64, 0xea, 0x6d, 0x8c, 0xb0, 0x57, 0x5d, 0xc3, 0x04, 0xa5, 0x79, 0xd4, 0x42, 0x4b, 0xc0,
|
||||
0x11, 0x31, 0xc7, 0x91, 0x16, 0x52, 0x7f, 0x71, 0x83, 0xa6, 0x25, 0x6b, 0xc2, 0xdc, 0xb0, 0x97,
|
||||
0xe1, 0x4a, 0x68, 0x45, 0x37, 0x8b, 0x09, 0x6c, 0x40, 0xb5, 0xf7, 0x50, 0x40, 0x29, 0xe8, 0x17,
|
||||
0x0a, 0x04, 0xbd, 0x05, 0xe8, 0xb9, 0x7b, 0x98, 0x38, 0xdf, 0xeb, 0x0c, 0xa0, 0xf8, 0x03, 0x44,
|
||||
0xdd, 0x0e, 0x5c, 0xe8, 0x3a, 0xa2, 0xdb, 0x38, 0x43, 0xb9, 0x34, 0x29, 0xb1, 0x29, 0xbe, 0x08,
|
||||
0x16, 0x5e, 0x9b, 0x08, 0x8c, 0xb9, 0xd0, 0xba, 0x02, 0x1d, 0xda, 0x20, 0x9f, 0xbb, 0xa1, 0x00,
|
||||
0xa4, 0x95, 0x24, 0x86, 0x4e, 0x98, 0xd0, 0x8c, 0xba, 0x3b, 0x0d, 0x27, 0x89, 0x2a, 0xd1, 0x5c,
|
||||
0x93, 0x3d, 0x06, 0x4c, 0x48, 0xfa, 0x21, 0x45, 0x83, 0x66, 0x85, 0x9a, 0xa2, 0x2f, 0x68, 0x00,
|
||||
0xaf, 0x72, 0x6b, 0x7d, 0xd8, 0x69, 0x0a, 0x3b, 0xa4, 0xb9, 0x11, 0x0f, 0xe7, 0xb9, 0x94, 0x3b,
|
||||
0xab, 0xe8, 0x49, 0x46, 0x85, 0xf5, 0x06, 0x35, 0x76, 0x13, 0xce, 0x5a, 0xa0, 0x7b, 0x37, 0x17,
|
||||
0x2f, 0x45, 0xfa, 0x5a, 0x49, 0x68, 0x6c, 0x0b, 0xc6, 0xdf, 0x31, 0x5a, 0xa7, 0x67, 0x3b, 0x6e,
|
||||
0x12, 0xfe, 0xfc, 0x4b, 0x9b, 0xc6, 0x30, 0x53, 0xaa, 0x0c, 0x07, 0x7d, 0x9c, 0xc9, 0x68, 0x7a,
|
||||
0xc7, 0x8a, 0x8e, 0xe6, 0x6c, 0xde, 0x6f, 0xb0, 0x65, 0xb8, 0x7b, 0x83, 0x7e, 0xfb, 0x70, 0xbf,
|
||||
0xff, 0xa9, 0xb7, 0x4d, 0xc8, 0xdb, 0x9a, 0xe6, 0x1c, 0xaa, 0x87, 0xad, 0xb8, 0xf9, 0x1b, 0xef,
|
||||
0xfe, 0xeb, 0xf2, 0x66, 0xff, 0xf3, 0x56, 0x2e, 0xef, 0x78, 0xf7, 0xdf, 0x95, 0x90, 0xa8, 0xe8,
|
||||
0xfe, 0xb9, 0x18, 0xed, 0x7f, 0x4a, 0x4c, 0xbc, 0x95, 0xd9, 0x2f, 0x4b, 0x5a, 0x2b, 0x79, 0x1b,
|
||||
0xcf, 0x37, 0xbc, 0x7b, 0x33, 0x15, 0x99, 0x18, 0x8d, 0xcd, 0x15, 0x56, 0x80, 0x0d, 0xe2, 0xc6,
|
||||
0x73, 0xe4, 0xde, 0xfe, 0x90, 0x1d, 0xe6, 0xc8, 0xed, 0x0d, 0xfa, 0x02, 0x23, 0x71, 0xd0, 0x5a,
|
||||
0x12, 0xcd, 0xc1, 0xec, 0x86, 0x08, 0xfa, 0x5b, 0x8f, 0xb5, 0x65, 0xf7, 0x0f, 0x06, 0xef, 0xed,
|
||||
0x33, 0x74, 0xe3, 0xcf, 0x0d, 0xd1, 0x4d, 0x7a, 0x21, 0xe0, 0x7f, 0xf4, 0x8a, 0xa0, 0x27, 0x05,
|
||||
0xfd, 0x3c, 0xfa, 0x7f, 0x34, 0x7c, 0x8e, 0xb0, 0x2e, 0x15, 0x00, 0x00
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x58, 0x6b, 0x73, 0xdb, 0xba,
|
||||
0x11, 0xfd, 0xae, 0x5f, 0x01, 0xa3, 0x1d, 0x0f, 0x39, 0xa6, 0x29, 0xc9, 0x4a, 0x72, 0x53, 0x5b,
|
||||
0xd4, 0xad, 0x1f, 0xba, 0xb1, 0x5b, 0xc7, 0x51, 0x47, 0x9e, 0x78, 0x3a, 0x69, 0xe6, 0x5e, 0x9a,
|
||||
0x5c, 0x49, 0x88, 0x49, 0x80, 0x25, 0x40, 0xc9, 0x1e, 0x47, 0xff, 0xbd, 0xbb, 0x00, 0xf5, 0xb4,
|
||||
0x9d, 0x76, 0x32, 0xee, 0x64, 0x92, 0x90, 0xc4, 0x62, 0x77, 0x71, 0xf6, 0xec, 0x03, 0xea, 0xee,
|
||||
0x9c, 0x7d, 0x3a, 0xbd, 0xfe, 0xe7, 0xa0, 0xcf, 0x26, 0x26, 0xcf, 0x7a, 0x5d, 0xfa, 0x97, 0x65,
|
||||
0xb1, 0x1c, 0x47, 0x1c, 0x24, 0xc7, 0x77, 0x88, 0xd3, 0x5e, 0x37, 0x07, 0x13, 0xb3, 0x64, 0x12,
|
||||
0x97, 0x1a, 0x4c, 0xc4, 0x2b, 0x33, 0xda, 0x7f, 0xcf, 0xeb, 0xaf, 0x0d, 0x19, 0xe7, 0x10, 0xf1,
|
||||
0xa9, 0x80, 0x59, 0xa1, 0x4a, 0xc3, 0x59, 0xa2, 0xa4, 0x01, 0x89, 0x62, 0x33, 0x91, 0x9a, 0x49,
|
||||
0xf4, 0xb6, 0xd5, 0x5a, 0x8a, 0x6e, 0x2d, 0xa5, 0x30, 0x15, 0x09, 0xec, 0xdb, 0x97, 0x40, 0x48,
|
||||
0x61, 0x44, 0x9c, 0xed, 0xeb, 0x24, 0xce, 0x20, 0x6a, 0x07, 0x79, 0x7c, 0x2f, 0xf2, 0x2a, 0x5f,
|
||||
0xbe, 0x57, 0x1a, 0x4a, 0xfb, 0x12, 0xdf, 0xe2, 0xbb, 0x54, 0xfc, 0x89, 0xe5, 0x5e, 0xd7, 0x08,
|
||||
0x93, 0x41, 0xef, 0x46, 0xfc, 0x26, 0xd8, 0x10, 0x8c, 0x11, 0x72, 0xac, 0xbb, 0x4d, 0xf7, 0xb1,
|
||||
0xab, 0x93, 0x52, 0x14, 0xa6, 0xd7, 0x98, 0xc6, 0x25, 0xcb, 0x54, 0x22, 0x8a, 0x20, 0x8d, 0x52,
|
||||
0x95, 0x54, 0x39, 0x3a, 0x14, 0xe0, 0x87, 0x68, 0xa7, 0x1d, 0xa0, 0x7a, 0x79, 0xa9, 0x54, 0xa1,
|
||||
0xa3, 0x56, 0x50, 0x94, 0x30, 0xc4, 0xd7, 0xe1, 0xf0, 0xe2, 0x2c, 0xe2, 0xfc, 0x68, 0x54, 0xc9,
|
||||
0xc4, 0x08, 0x25, 0xd9, 0xf8, 0x22, 0xf5, 0xc0, 0x7f, 0x2c, 0xc1, 0x54, 0xa5, 0x64, 0x69, 0x38,
|
||||
0x06, 0xd3, 0xcf, 0x80, 0xb4, 0x9c, 0x3c, 0xd8, 0xa5, 0xf9, 0x52, 0x34, 0xe9, 0x6f, 0x48, 0x26,
|
||||
0x25, 0xc4, 0x06, 0x6a, 0xe1, 0x0d, 0xc1, 0x73, 0xcf, 0x7f, 0x9c, 0x09, 0x99, 0xaa, 0x59, 0xa8,
|
||||
0x0a, 0x90, 0x1e, 0x9f, 0x18, 0x53, 0xe8, 0xc3, 0x66, 0x33, 0xcf, 0xc3, 0x3b, 0xa9, 0xc2, 0x59,
|
||||
0x06, 0x64, 0xa8, 0x39, 0x42, 0x05, 0x55, 0x09, 0xba, 0xa9, 0xeb, 0xd3, 0x35, 0xff, 0x34, 0x13,
|
||||
0x23, 0xb1, 0xbf, 0x78, 0xe5, 0x6b, 0x3a, 0x4f, 0xb6, 0x75, 0x2e, 0x37, 0xf1, 0x80, 0xff, 0xae,
|
||||
0x21, 0x1b, 0xad, 0x4b, 0x5f, 0xa1, 0x34, 0x46, 0x47, 0x1b, 0x06, 0x91, 0x87, 0x68, 0xfc, 0x6a,
|
||||
0x5d, 0x40, 0x0f, 0xf8, 0x9e, 0x05, 0xeb, 0x90, 0x73, 0x7f, 0x8f, 0x37, 0xbf, 0x69, 0x25, 0x9b,
|
||||
0x12, 0x0c, 0x0f, 0x4c, 0x44, 0x40, 0x70, 0x42, 0x8c, 0xfb, 0x47, 0x26, 0x4c, 0x85, 0xa6, 0xc0,
|
||||
0xa4, 0xd1, 0x4e, 0x2b, 0x30, 0xa1, 0x90, 0x12, 0xca, 0xf3, 0xeb, 0x8f, 0x97, 0x11, 0x27, 0x10,
|
||||
0x25, 0x9a, 0x0d, 0xc3, 0x90, 0x07, 0x23, 0x30, 0xc9, 0x04, 0x8f, 0x1e, 0x9a, 0x09, 0xba, 0x04,
|
||||
0x51, 0x0f, 0x42, 0x52, 0xe9, 0xf9, 0xab, 0x2f, 0x9f, 0x6e, 0xbf, 0x41, 0x62, 0xc2, 0x58, 0x6b,
|
||||
0x31, 0x96, 0xde, 0xe3, 0x3c, 0x78, 0x44, 0x7b, 0x33, 0x55, 0xde, 0xe9, 0xc3, 0x2f, 0x5f, 0xe7,
|
||||
0x01, 0xee, 0x5d, 0xbc, 0x87, 0x1a, 0xa3, 0xee, 0x79, 0x10, 0x18, 0x3f, 0xea, 0x99, 0xb0, 0xc4,
|
||||
0x1d, 0xfb, 0x60, 0xff, 0xf3, 0xc3, 0x12, 0xd2, 0x2a, 0x81, 0xc5, 0xa2, 0x07, 0x28, 0x9b, 0x83,
|
||||
0x33, 0x88, 0xeb, 0x69, 0x14, 0x45, 0xc6, 0x3e, 0xf8, 0xdf, 0xbf, 0x43, 0x58, 0x54, 0x7a, 0xe2,
|
||||
0x19, 0x1f, 0x75, 0x07, 0x5f, 0xbe, 0xae, 0xb9, 0xf2, 0x28, 0x46, 0x5e, 0x0b, 0x45, 0x21, 0xcc,
|
||||
0x40, 0x8e, 0xcd, 0x64, 0x77, 0x77, 0x49, 0x90, 0x6e, 0xbb, 0xe5, 0xd7, 0x81, 0x5d, 0x7e, 0xdb,
|
||||
0xdb, 0x0b, 0xa6, 0x4a, 0xa4, 0x0c, 0x71, 0xbe, 0x16, 0x39, 0xa8, 0xca, 0x78, 0x57, 0x41, 0x1b,
|
||||
0x3a, 0xfe, 0xd1, 0x1a, 0xaf, 0x8e, 0x32, 0x30, 0x4c, 0x3a, 0xf0, 0x4e, 0x87, 0x08, 0x1d, 0xda,
|
||||
0x90, 0xfe, 0x23, 0x7d, 0x35, 0x11, 0x12, 0x86, 0x63, 0x64, 0xf0, 0xfc, 0x16, 0x53, 0x54, 0x74,
|
||||
0x6c, 0x4c, 0x29, 0x6e, 0x2b, 0x03, 0x1e, 0x17, 0x29, 0x06, 0x8e, 0xb6, 0x04, 0xdb, 0x2b, 0x94,
|
||||
0x07, 0x2f, 0xad, 0x29, 0x89, 0x69, 0x2b, 0xc7, 0xb4, 0x7e, 0xed, 0xf9, 0x28, 0xb0, 0xce, 0x6b,
|
||||
0x19, 0x4e, 0xe3, 0xac, 0x82, 0xa3, 0x91, 0x2a, 0x3d, 0xf2, 0x00, 0xd0, 0x3f, 0xe8, 0x9a, 0x30,
|
||||
0x99, 0x88, 0x2c, 0x2d, 0x41, 0xd6, 0xe7, 0x3e, 0x82, 0xbd, 0x3d, 0x1f, 0x01, 0x86, 0x5c, 0x4d,
|
||||
0xe1, 0x94, 0xd6, 0xbc, 0x95, 0xcc, 0x17, 0xf8, 0xea, 0x2f, 0x15, 0x28, 0x54, 0xa0, 0xba, 0x0b,
|
||||
0xbc, 0x8e, 0x14, 0xee, 0xab, 0x69, 0x25, 0xec, 0xe1, 0x54, 0x41, 0x6c, 0xa3, 0x53, 0x6f, 0xb9,
|
||||
0x69, 0xfd, 0xe0, 0x01, 0x7c, 0x51, 0x5f, 0x5d, 0x5c, 0x02, 0xb1, 0x46, 0xa2, 0x3f, 0xfe, 0xfc,
|
||||
0xb8, 0x5c, 0x99, 0x33, 0xaf, 0x7e, 0xa3, 0x48, 0xcf, 0x59, 0x7a, 0x92, 0xfb, 0x7f, 0xac, 0x36,
|
||||
0x62, 0xb8, 0xea, 0x53, 0xed, 0xee, 0x6e, 0x1b, 0x71, 0xd0, 0x02, 0xe1, 0xb8, 0x7c, 0x24, 0xc4,
|
||||
0xe2, 0x02, 0x13, 0x24, 0x75, 0x07, 0x13, 0xfe, 0xdc, 0x39, 0xac, 0x36, 0x1d, 0x56, 0xcf, 0x3b,
|
||||
0xcc, 0x77, 0x4e, 0x31, 0xeb, 0x02, 0xb5, 0xce, 0xf8, 0x4f, 0xc8, 0x9f, 0x92, 0xd5, 0x2c, 0xb5,
|
||||
0xb4, 0xdf, 0x34, 0xa1, 0xfc, 0x40, 0x22, 0x98, 0x45, 0x16, 0x27, 0x70, 0x23, 0x0c, 0x51, 0x6f,
|
||||
0xbe, 0x9e, 0x40, 0xed, 0xa7, 0x09, 0xc4, 0xe7, 0x6b, 0xb9, 0x8a, 0x71, 0x7c, 0x74, 0xd1, 0xda,
|
||||
0x60, 0xd1, 0x0e, 0x7c, 0xff, 0x6e, 0xdd, 0xd9, 0x41, 0xc2, 0x5a, 0xf7, 0x6a, 0x86, 0x1e, 0xad,
|
||||
0xc8, 0x25, 0x64, 0x51, 0x39, 0x6e, 0x99, 0x87, 0x02, 0x6b, 0xa7, 0x81, 0x7b, 0xca, 0xe5, 0x10,
|
||||
0x71, 0x23, 0x3d, 0xf8, 0xe4, 0x6a, 0xaa, 0x7b, 0xde, 0x3c, 0x31, 0x16, 0x64, 0x17, 0x56, 0x1e,
|
||||
0x74, 0x0e, 0x08, 0x36, 0x6b, 0x23, 0x5a, 0xe3, 0x53, 0x00, 0xdb, 0xc7, 0x5a, 0xfa, 0x9c, 0xa9,
|
||||
0x38, 0xfd, 0xdb, 0x90, 0xd2, 0x11, 0x0b, 0x84, 0x73, 0x5f, 0x3a, 0xba, 0xdb, 0xb2, 0x8c, 0x2e,
|
||||
0xc9, 0xed, 0x60, 0x95, 0x09, 0xa7, 0x8c, 0xdc, 0xfe, 0x4e, 0x8e, 0x23, 0xee, 0xe4, 0x79, 0xf3,
|
||||
0x5b, 0x3c, 0x8d, 0x17, 0x0a, 0x9e, 0x08, 0xc6, 0xfa, 0x41, 0xa2, 0x0a, 0xcc, 0xeb, 0x34, 0xbc,
|
||||
0x55, 0xe9, 0xc3, 0x46, 0x0c, 0x24, 0xc9, 0xc7, 0x69, 0xda, 0x9f, 0x62, 0x2d, 0xbe, 0x14, 0x1a,
|
||||
0xdb, 0x12, 0x94, 0x1e, 0x27, 0x37, 0x79, 0xe0, 0x61, 0xc9, 0x78, 0xfc, 0x00, 0xe6, 0xb3, 0xe7,
|
||||
0xcf, 0x9f, 0x97, 0x83, 0xb2, 0x54, 0x25, 0xba, 0x87, 0x72, 0xc4, 0x16, 0x95, 0x21, 0xe5, 0xd5,
|
||||
0xd8, 0xe3, 0x7d, 0xfa, 0xce, 0xea, 0xf3, 0x62, 0xd1, 0x63, 0x23, 0x91, 0x81, 0x3d, 0x06, 0x36,
|
||||
0x31, 0x2c, 0x56, 0xfc, 0xb2, 0xfe, 0xae, 0x46, 0xd4, 0x27, 0x47, 0x62, 0x5c, 0x95, 0xb1, 0x05,
|
||||
0xc8, 0x1d, 0x83, 0x8d, 0x62, 0x41, 0xb5, 0xfe, 0x5f, 0xf2, 0x42, 0x26, 0x2a, 0x2f, 0x10, 0x27,
|
||||
0x60, 0x45, 0x3c, 0x06, 0x96, 0xc6, 0x26, 0xde, 0xc1, 0x8a, 0xbd, 0x86, 0xe9, 0x10, 0x79, 0xc0,
|
||||
0xc9, 0xc0, 0x21, 0x8f, 0xa2, 0xba, 0xd4, 0x63, 0xb1, 0xb6, 0xfa, 0xc2, 0xa2, 0x54, 0x46, 0x25,
|
||||
0x2a, 0xdb, 0xdd, 0xf5, 0x6c, 0x73, 0x6b, 0x05, 0x9e, 0x2d, 0xe4, 0x11, 0x49, 0x64, 0x43, 0xa3,
|
||||
0x4a, 0xd4, 0x4a, 0xcd, 0xeb, 0xc2, 0x40, 0x4e, 0x07, 0x4f, 0x2e, 0x0a, 0xee, 0x63, 0x39, 0xac,
|
||||
0xc5, 0x70, 0x7f, 0x5e, 0xa0, 0xc3, 0xbf, 0xa1, 0x7e, 0xf6, 0x51, 0xa5, 0x10, 0xb2, 0x41, 0x06,
|
||||
0xb1, 0x06, 0x86, 0x40, 0x20, 0xbd, 0x6f, 0x2e, 0xfb, 0x67, 0xec, 0x62, 0x80, 0x2e, 0x05, 0x1b,
|
||||
0x1a, 0xf5, 0xa6, 0xc6, 0xc0, 0x6a, 0xf3, 0x7d, 0x92, 0xb2, 0x0c, 0xf8, 0x41, 0x73, 0x59, 0x36,
|
||||
0x35, 0x8d, 0x4d, 0xe1, 0xd7, 0x22, 0x6a, 0xf3, 0x60, 0xa7, 0xed, 0xcf, 0x1b, 0xdd, 0x66, 0xdd,
|
||||
0xbb, 0xbb, 0xda, 0x3c, 0x60, 0x2b, 0xff, 0xab, 0xc8, 0xa9, 0xdf, 0xb3, 0xaa, 0xcc, 0x90, 0x26,
|
||||
0xf4, 0x29, 0x4c, 0x34, 0x66, 0xe1, 0x11, 0x0a, 0x5a, 0x81, 0x6e, 0xd3, 0x4d, 0x2d, 0x14, 0x75,
|
||||
0x0c, 0x06, 0x59, 0xc6, 0x34, 0xc2, 0xea, 0xd7, 0xeb, 0x62, 0xa1, 0xca, 0x1b, 0x8c, 0xe8, 0x4e,
|
||||
0x4f, 0xbf, 0x6b, 0xce, 0x1c, 0xe1, 0x87, 0x23, 0xce, 0x70, 0x46, 0x99, 0x28, 0x5c, 0x29, 0x94,
|
||||
0xa6, 0x61, 0x22, 0x15, 0x53, 0x96, 0x64, 0xd8, 0x87, 0x30, 0x4d, 0x14, 0xc2, 0x31, 0xdb, 0xfc,
|
||||
0x36, 0x81, 0xac, 0x38, 0xe1, 0xbd, 0x46, 0x17, 0xd9, 0x66, 0x30, 0x1a, 0x2e, 0xa1, 0xdc, 0x0b,
|
||||
0x47, 0xab, 0x49, 0x26, 0x92, 0xbb, 0x88, 0x9f, 0x93, 0xd9, 0x5f, 0xbb, 0x4d, 0xb7, 0x80, 0xae,
|
||||
0xa1, 0x8a, 0xde, 0xf3, 0x7b, 0x1a, 0xcb, 0x4d, 0x27, 0xb4, 0xe9, 0x24, 0x4e, 0xee, 0x56, 0xfb,
|
||||
0x36, 0x76, 0xe8, 0xea, 0x36, 0x17, 0xe8, 0xe3, 0x30, 0x9e, 0x02, 0xdb, 0x65, 0xa7, 0x0a, 0xab,
|
||||
0x45, 0x62, 0x56, 0xc2, 0x93, 0x12, 0xfd, 0x72, 0x96, 0x26, 0x07, 0x6e, 0x1e, 0x42, 0x70, 0xab,
|
||||
0x02, 0x81, 0x39, 0xc0, 0x4f, 0x9d, 0x5e, 0xbd, 0x83, 0x19, 0xc5, 0xe0, 0x1e, 0x59, 0x4d, 0x94,
|
||||
0xac, 0x0b, 0x16, 0xca, 0x74, 0x96, 0xe6, 0x1a, 0x9b, 0x1e, 0x12, 0x6e, 0xb6, 0xe3, 0xaf, 0xce,
|
||||
0x77, 0x45, 0xae, 0x52, 0x01, 0x58, 0x73, 0x15, 0xad, 0x5f, 0x39, 0x65, 0x16, 0x5d, 0xe6, 0xd9,
|
||||
0xe2, 0xc0, 0x00, 0x09, 0xf5, 0x40, 0x26, 0xa5, 0x32, 0xc4, 0x7e, 0xf2, 0xc0, 0x3f, 0x24, 0xf1,
|
||||
0xae, 0xad, 0x4b, 0x6c, 0xad, 0x26, 0xb1, 0xba, 0x22, 0x2d, 0x86, 0x3c, 0x7a, 0x5c, 0x16, 0xa0,
|
||||
0x88, 0x77, 0x0e, 0xb8, 0xb5, 0xb3, 0x30, 0x53, 0x60, 0x48, 0xf0, 0x21, 0x7d, 0xaa, 0x6d, 0xb1,
|
||||
0xb2, 0xd2, 0x34, 0xd8, 0xd0, 0xf4, 0xae, 0xe3, 0x34, 0x0d, 0x0d, 0xe6, 0x4d, 0x82, 0x8c, 0x66,
|
||||
0xd8, 0xc8, 0x08, 0xd6, 0xd8, 0xb0, 0x56, 0x68, 0xff, 0x30, 0xa4, 0x0a, 0x3b, 0x3b, 0x3f, 0x1d,
|
||||
0x6c, 0x38, 0x5b, 0xab, 0xbb, 0x68, 0xf1, 0xda, 0x92, 0xac, 0xf2, 0x5b, 0x28, 0xf9, 0x82, 0x1f,
|
||||
0x48, 0xad, 0x5c, 0xc8, 0x88, 0xb7, 0xac, 0xb9, 0x88, 0x1f, 0xbc, 0x7d, 0xcb, 0x59, 0x09, 0xff,
|
||||
0xae, 0x04, 0xce, 0x26, 0x3d, 0x16, 0xb2, 0x2d, 0x3d, 0xed, 0x57, 0xd2, 0x73, 0xf0, 0x4a, 0x7a,
|
||||
0x3a, 0x3f, 0xa5, 0x67, 0x0d, 0xca, 0x31, 0x0e, 0xbb, 0xb3, 0xf8, 0xe1, 0xb0, 0xb1, 0x06, 0x9a,
|
||||
0xd3, 0xfd, 0xe1, 0xa7, 0x31, 0x6b, 0x6c, 0xea, 0x79, 0x25, 0xcc, 0x3e, 0xbc, 0x12, 0x66, 0x1f,
|
||||
0x7e, 0x1e, 0xb3, 0x46, 0x0d, 0x1a, 0x66, 0x36, 0xe6, 0x21, 0x4a, 0xe9, 0xbb, 0xc3, 0x27, 0xb8,
|
||||
0x0d, 0xff, 0x07, 0xdc, 0x1a, 0x3f, 0x74, 0xb4, 0xd6, 0xd3, 0x7e, 0x25, 0x3d, 0x07, 0xaf, 0xa4,
|
||||
0xa7, 0xf3, 0x73, 0x7a, 0x08, 0xa0, 0xfc, 0xec, 0x6a, 0xc8, 0xb0, 0x41, 0xe3, 0xad, 0x48, 0x2f,
|
||||
0x52, 0xd7, 0x15, 0x1a, 0xca, 0x5a, 0xa9, 0x18, 0x09, 0xb8, 0xc4, 0xad, 0x9b, 0x4e, 0x6d, 0xbb,
|
||||
0xb1, 0x51, 0x6e, 0xea, 0xda, 0xf0, 0xf1, 0x49, 0x95, 0x61, 0xb6, 0xa5, 0x66, 0xb4, 0xff, 0x34,
|
||||
0x13, 0xd8, 0xfb, 0xb0, 0x44, 0x1c, 0xb2, 0xae, 0x2e, 0x62, 0xb9, 0xf4, 0x52, 0x14, 0xd8, 0x07,
|
||||
0xae, 0x56, 0x45, 0x0d, 0x52, 0xec, 0x44, 0x28, 0x60, 0x1d, 0xac, 0xcb, 0xad, 0x6d, 0xf5, 0xc0,
|
||||
0x8e, 0x93, 0x84, 0x1c, 0x1d, 0x28, 0x21, 0x8d, 0xad, 0xb4, 0x8d, 0xe3, 0x01, 0xa3, 0xf2, 0xf8,
|
||||
0xac, 0xef, 0xc7, 0x83, 0x17, 0xeb, 0xa3, 0x73, 0xf8, 0xf8, 0x69, 0x59, 0xb4, 0xe9, 0x76, 0x2e,
|
||||
0x52, 0xb4, 0x35, 0xb0, 0x52, 0x87, 0x6c, 0x63, 0x7b, 0x32, 0x81, 0xe4, 0xee, 0x56, 0xdd, 0x2f,
|
||||
0x55, 0x9c, 0xbb, 0x02, 0x48, 0x8e, 0x2c, 0x8a, 0xe5, 0x53, 0x67, 0xe8, 0x0a, 0xe9, 0xff, 0xa8,
|
||||
0xba, 0xd6, 0xca, 0x06, 0x2e, 0x52, 0x6b, 0xd5, 0x15, 0x95, 0x1a, 0x1c, 0x18, 0x30, 0x8a, 0x5e,
|
||||
0xf8, 0xf8, 0x3e, 0x78, 0xd7, 0x99, 0xfb, 0xdf, 0xb1, 0x67, 0x30, 0x7b, 0x2d, 0x8f, 0x78, 0xdf,
|
||||
0x9a, 0x40, 0x0b, 0x18, 0xe8, 0x90, 0xbd, 0xb7, 0x3f, 0x32, 0xc4, 0x08, 0x61, 0xa9, 0x17, 0x6e,
|
||||
0xad, 0x21, 0xc6, 0x6c, 0x2b, 0xa3, 0x0b, 0x8d, 0x84, 0xec, 0x70, 0x93, 0x44, 0xc7, 0xa7, 0x2f,
|
||||
0x90, 0xe8, 0x7e, 0xc1, 0xa2, 0xf6, 0x82, 0x45, 0xed, 0xce, 0x16, 0x89, 0xf0, 0xe8, 0x74, 0x40,
|
||||
0x4d, 0x81, 0xb5, 0x17, 0x83, 0x85, 0x4e, 0x6c, 0xf0, 0x5d, 0x77, 0x05, 0x60, 0x6e, 0xda, 0x45,
|
||||
0x2a, 0x52, 0xa8, 0x17, 0x91, 0xa6, 0x85, 0x78, 0x44, 0xf3, 0xd0, 0xad, 0x52, 0x18, 0x50, 0x27,
|
||||
0xbb, 0xbd, 0xa7, 0xcd, 0x7b, 0x67, 0x42, 0xaf, 0x91, 0x63, 0x4b, 0xac, 0x51, 0xcb, 0x61, 0xf4,
|
||||
0x8e, 0x33, 0x2c, 0x99, 0xfa, 0x25, 0x45, 0xd8, 0xab, 0xae, 0x60, 0x8a, 0xd6, 0x3c, 0x6a, 0xa1,
|
||||
0x25, 0xe0, 0x88, 0x98, 0xe3, 0x48, 0x0b, 0xa9, 0xbf, 0xdc, 0x41, 0xd3, 0x92, 0x3d, 0xc2, 0xe2,
|
||||
0x60, 0xcf, 0xd3, 0x95, 0xd8, 0x8a, 0x30, 0x8b, 0x29, 0x6c, 0x51, 0xb5, 0x7f, 0x5f, 0x40, 0x29,
|
||||
0xe8, 0x17, 0x0a, 0x24, 0xbd, 0x25, 0xe8, 0x99, 0xbb, 0x98, 0x38, 0xec, 0x75, 0x06, 0x50, 0xfc,
|
||||
0x17, 0x46, 0xdd, 0x0c, 0x5d, 0xe8, 0xba, 0xa2, 0xd7, 0x38, 0x45, 0xbb, 0x34, 0x29, 0xb1, 0x19,
|
||||
0xde, 0x08, 0x96, 0xa8, 0x4d, 0x05, 0xc6, 0x5c, 0x68, 0x5d, 0x81, 0x0e, 0x6d, 0x90, 0xcf, 0xdc,
|
||||
0x50, 0x00, 0xd2, 0x5a, 0x12, 0x23, 0x67, 0x4c, 0x68, 0x46, 0xdd, 0x9d, 0x86, 0x93, 0x44, 0x95,
|
||||
0x78, 0x5c, 0x93, 0x3d, 0x04, 0x4c, 0x48, 0xfa, 0x21, 0x45, 0x83, 0x66, 0x85, 0x9a, 0x21, 0x16,
|
||||
0x34, 0x80, 0x57, 0xb9, 0x3d, 0x7d, 0xd8, 0x6d, 0x0a, 0x3b, 0xa4, 0xb9, 0x11, 0x0f, 0xe7, 0xb9,
|
||||
0x94, 0xbb, 0x53, 0xd1, 0x95, 0x8c, 0x0a, 0xeb, 0x35, 0x7a, 0xec, 0x26, 0x9c, 0x8d, 0x40, 0xf7,
|
||||
0xaf, 0xcf, 0x9f, 0x8b, 0xf4, 0x95, 0x92, 0xd0, 0x78, 0x29, 0x18, 0x7f, 0xc1, 0x68, 0x9d, 0x9c,
|
||||
0xee, 0xb8, 0x49, 0xf8, 0xf3, 0x9b, 0x0e, 0x8d, 0x61, 0xa6, 0x54, 0x19, 0x0e, 0xfa, 0x38, 0x93,
|
||||
0xd1, 0xf4, 0x8e, 0x15, 0x1d, 0x8f, 0xb3, 0xbd, 0xbf, 0xc1, 0x56, 0xe1, 0xee, 0x0f, 0x07, 0x9d,
|
||||
0x83, 0xfd, 0xc1, 0xa7, 0xfe, 0x4b, 0x46, 0xde, 0xd5, 0x32, 0x67, 0x50, 0xdd, 0xbf, 0xc8, 0x9b,
|
||||
0x5f, 0x78, 0xef, 0xef, 0x17, 0xd7, 0xfb, 0x9f, 0x5f, 0xd4, 0xf2, 0x9e, 0xf7, 0xfe, 0x51, 0x09,
|
||||
0x89, 0x8e, 0xee, 0x9f, 0x89, 0xf1, 0xfe, 0xa7, 0xc4, 0xc4, 0x2f, 0x2a, 0x7b, 0xb3, 0x92, 0xb5,
|
||||
0x96, 0x5f, 0x24, 0x35, 0xe2, 0x33, 0x84, 0x72, 0xfc, 0xcb, 0x9b, 0x7d, 0x44, 0xef, 0x19, 0xb9,
|
||||
0x85, 0xc2, 0xb7, 0xbc, 0x77, 0x3d, 0x13, 0x99, 0x18, 0x4f, 0xcc, 0x25, 0x96, 0x8a, 0x1f, 0x6b,
|
||||
0x45, 0x86, 0xdf, 0x3c, 0x2f, 0xd0, 0x58, 0x25, 0xd3, 0xcd, 0x35, 0x82, 0x86, 0x46, 0x5b, 0xed,
|
||||
0x95, 0xd4, 0x3a, 0xeb, 0xed, 0xdf, 0x7a, 0xfc, 0x2d, 0xff, 0xef, 0xc3, 0x76, 0x93, 0x6e, 0x12,
|
||||
0x94, 0x77, 0x74, 0xdd, 0xa0, 0xbb, 0x07, 0xfd, 0x8e, 0xfa, 0x1f, 0x86, 0x19, 0xad, 0x71, 0x57,
|
||||
0x15, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
@@ -1562,37 +1563,37 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
|
||||
const uint16_t PAGE_settings_sec_length = 2500;
|
||||
const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x58, 0xff, 0x72, 0xdb, 0x36,
|
||||
0x12, 0xfe, 0x5f, 0x4f, 0x01, 0xa1, 0x33, 0xa9, 0x78, 0xa5, 0x29, 0xdb, 0x49, 0x3b, 0xa9, 0x23,
|
||||
0x2a, 0x67, 0xc7, 0x4e, 0xe3, 0x1b, 0x3b, 0xf6, 0x44, 0x4a, 0x73, 0x37, 0xb9, 0x4c, 0x06, 0x22,
|
||||
0x12, 0xfe, 0x5f, 0x4f, 0x01, 0xa1, 0x33, 0xa9, 0x78, 0xa1, 0x29, 0xdb, 0x49, 0x3b, 0x89, 0x23,
|
||||
0x2a, 0x67, 0xc7, 0x4e, 0xe3, 0x1b, 0x3b, 0xf6, 0x44, 0x4a, 0x73, 0x37, 0xbd, 0x4e, 0x06, 0x22,
|
||||
0x21, 0x11, 0x11, 0x49, 0xb0, 0x00, 0x68, 0x45, 0x97, 0xf6, 0x3d, 0xee, 0x69, 0xee, 0x61, 0xee,
|
||||
0x49, 0xee, 0x5b, 0x90, 0x94, 0x64, 0xc7, 0x49, 0x27, 0x73, 0x7f, 0xd8, 0x12, 0x09, 0x60, 0x7f,
|
||||
0x7c, 0xbb, 0xfb, 0xed, 0x42, 0xa3, 0xfe, 0xe9, 0xd5, 0xb3, 0xe9, 0x3f, 0xae, 0xcf, 0x58, 0xe6,
|
||||
0x7c, 0xbb, 0xfb, 0xed, 0x42, 0xa3, 0xfe, 0xe9, 0xd5, 0x8b, 0xe9, 0x3f, 0xae, 0xcf, 0x58, 0xe6,
|
||||
0x8a, 0x7c, 0x3c, 0xa2, 0xff, 0x2c, 0x17, 0xe5, 0x22, 0xe6, 0xb2, 0xe4, 0x78, 0x96, 0x22, 0x1d,
|
||||
0x8f, 0x0a, 0xe9, 0x04, 0x2b, 0x45, 0x21, 0x63, 0x7e, 0xa3, 0xe4, 0xaa, 0xd2, 0xc6, 0x71, 0x96,
|
||||
0xe8, 0xd2, 0xc9, 0xd2, 0xc5, 0x7c, 0xa5, 0x52, 0x97, 0xc5, 0x3f, 0xee, 0xef, 0xf3, 0x71, 0xaf,
|
||||
0xe8, 0xd2, 0xc9, 0xd2, 0xc5, 0x7c, 0xa5, 0x52, 0x97, 0xc5, 0x3f, 0xec, 0xef, 0xf3, 0x71, 0xaf,
|
||||
0xd9, 0xda, 0xbb, 0xb3, 0x96, 0xca, 0x1b, 0x95, 0xc8, 0x3d, 0xff, 0x10, 0xaa, 0x52, 0x39, 0x25,
|
||||
0xf2, 0x3d, 0x9b, 0x88, 0x5c, 0xc6, 0x07, 0x61, 0x21, 0x3e, 0xaa, 0xa2, 0x2e, 0x36, 0xcf, 0xb5,
|
||||
0x95, 0xc6, 0x3f, 0x88, 0x19, 0x9e, 0x4b, 0xcd, 0x59, 0xef, 0x8e, 0xea, 0xd6, 0xa0, 0x24, 0x13,
|
||||
0xc6, 0x4a, 0x28, 0xa9, 0xdd, 0x7c, 0xef, 0x31, 0xde, 0x3a, 0xe5, 0x72, 0x39, 0xbe, 0x54, 0x36,
|
||||
0xc6, 0x4a, 0x28, 0xa9, 0xdd, 0x7c, 0xef, 0x09, 0xde, 0x3a, 0xe5, 0x72, 0x39, 0xbe, 0x54, 0x36,
|
||||
0x61, 0x13, 0xe9, 0x9c, 0x2a, 0x17, 0x76, 0x34, 0x6c, 0x5e, 0x8e, 0x6c, 0x62, 0x54, 0xe5, 0xc6,
|
||||
0xbd, 0x1b, 0x61, 0x58, 0xae, 0x13, 0x55, 0x85, 0x4e, 0x15, 0x52, 0xd7, 0x2e, 0x4c, 0xe3, 0x54,
|
||||
0x27, 0x75, 0x01, 0x73, 0x43, 0x2c, 0xc4, 0xfd, 0x83, 0x27, 0xf3, 0xba, 0x4c, 0x9c, 0xd2, 0x25,
|
||||
0x7b, 0x31, 0x08, 0x3e, 0xad, 0x54, 0x99, 0xea, 0x55, 0xa4, 0x2b, 0x59, 0x0e, 0x78, 0xe6, 0x5c,
|
||||
0x27, 0x75, 0x01, 0x73, 0x43, 0x2c, 0xc4, 0xfd, 0x83, 0x67, 0xf3, 0xba, 0x4c, 0x9c, 0xd2, 0x25,
|
||||
0x7b, 0x35, 0x08, 0x3e, 0xad, 0x54, 0x99, 0xea, 0x55, 0xa4, 0x2b, 0x59, 0x0e, 0x78, 0xe6, 0x5c,
|
||||
0x65, 0x8f, 0x86, 0xc3, 0xa2, 0x88, 0x96, 0xa5, 0x8e, 0x56, 0xb9, 0x4c, 0xa3, 0x85, 0x1c, 0xce,
|
||||
0xa5, 0x70, 0xb5, 0x91, 0x76, 0x68, 0x5b, 0xb5, 0xc3, 0xef, 0xac, 0x4c, 0x6a, 0xa3, 0xdc, 0x7a,
|
||||
0xaf, 0x7b, 0xc5, 0x83, 0x3f, 0x36, 0x72, 0x4f, 0xee, 0xca, 0xdd, 0x1c, 0xe4, 0x21, 0x7f, 0x6f,
|
||||
0x65, 0x3e, 0xdf, 0xdd, 0xfd, 0xfa, 0xb3, 0xdd, 0x75, 0x95, 0x0a, 0x27, 0xef, 0xdb, 0xbb, 0x38,
|
||||
0x65, 0x3e, 0xdf, 0xdd, 0xfd, 0xf6, 0xb3, 0xdd, 0x75, 0x95, 0x0a, 0x27, 0xef, 0xdb, 0xbb, 0x38,
|
||||
0x4f, 0x07, 0x32, 0xf8, 0x64, 0x24, 0xec, 0x29, 0x19, 0x19, 0xe7, 0xce, 0x72, 0x49, 0xce, 0x9d,
|
||||
0xac, 0xfd, 0xd2, 0x76, 0xab, 0xb2, 0x57, 0xb3, 0x0f, 0x3b, 0x9b, 0xe5, 0x83, 0x07, 0x5c, 0xcf,
|
||||
0x3e, 0xc8, 0xc4, 0xf1, 0x38, 0x76, 0xeb, 0x4a, 0xea, 0x39, 0xbd, 0xeb, 0x1f, 0x1b, 0x23, 0xd6,
|
||||
0x91, 0xb2, 0xfe, 0xf3, 0x96, 0x84, 0x5c, 0x8b, 0xf4, 0x6f, 0x93, 0x81, 0x0c, 0x5d, 0xdc, 0xdf,
|
||||
0x0f, 0x3e, 0xe5, 0xd2, 0x31, 0x1d, 0xa7, 0x51, 0x62, 0x00, 0x87, 0x6c, 0xd5, 0x0e, 0x78, 0x83,
|
||||
0x3c, 0x0f, 0x9e, 0xe8, 0x08, 0x5e, 0x1e, 0x3b, 0x67, 0xd4, 0xac, 0x76, 0x12, 0x0b, 0x26, 0xe1,
|
||||
0x3c, 0x0f, 0x9e, 0xe9, 0x08, 0x5e, 0x1e, 0x3b, 0x67, 0xd4, 0xac, 0x76, 0x12, 0x0b, 0x26, 0xe1,
|
||||
0xa1, 0x0c, 0xc2, 0xbb, 0xef, 0x49, 0x37, 0x7c, 0x73, 0xf2, 0xa3, 0x1b, 0x7e, 0x10, 0x37, 0xa2,
|
||||
0x13, 0xf0, 0xd9, 0x46, 0x61, 0xd7, 0x25, 0x44, 0xb8, 0x20, 0x4c, 0xa3, 0x99, 0x4e, 0xd7, 0x91,
|
||||
0xa8, 0x80, 0x4f, 0xfa, 0x2c, 0x53, 0x79, 0x3a, 0xd0, 0xb4, 0x5f, 0xa4, 0xe9, 0xd9, 0x0d, 0xac,
|
||||
0xb8, 0x50, 0x16, 0xf9, 0x28, 0xcd, 0x80, 0x93, 0xcd, 0x3c, 0x1c, 0x04, 0xf1, 0xf8, 0xd3, 0x2f,
|
||||
0xd2, 0xfd, 0x3a, 0x08, 0x42, 0xc8, 0x3c, 0x49, 0x96, 0xcf, 0x55, 0x2e, 0x29, 0xcd, 0x06, 0x84,
|
||||
0xa8, 0x80, 0x4f, 0xfa, 0x22, 0x53, 0x79, 0x3a, 0xd0, 0xb4, 0x5f, 0xa4, 0xe9, 0xd9, 0x0d, 0xac,
|
||||
0xb8, 0x50, 0x16, 0xf9, 0x28, 0xcd, 0x80, 0x93, 0xcd, 0x3c, 0x1c, 0x04, 0xf1, 0xf8, 0xd3, 0x4f,
|
||||
0xd2, 0xfd, 0x3c, 0x08, 0x42, 0xc8, 0x3c, 0x49, 0x96, 0x2f, 0x55, 0x2e, 0x29, 0xcd, 0x06, 0x84,
|
||||
0x20, 0x9f, 0x25, 0xcb, 0x64, 0xbe, 0xe0, 0xc1, 0x17, 0x57, 0x2b, 0x44, 0x5b, 0x3a, 0x04, 0x35,
|
||||
0xf8, 0xe3, 0x7e, 0x3d, 0xd2, 0x18, 0x6d, 0xe0, 0x1e, 0xf4, 0xa0, 0x18, 0xac, 0xce, 0x65, 0x94,
|
||||
0xeb, 0xc5, 0x80, 0x9f, 0xd1, 0x7b, 0xd6, 0x82, 0x87, 0x88, 0xb3, 0x39, 0x44, 0x7b, 0x18, 0x90,
|
||||
@@ -1600,65 +1601,65 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||
0xc0, 0xc0, 0xe6, 0x42, 0x51, 0xd6, 0xfd, 0xb3, 0x3c, 0x2f, 0x13, 0x5d, 0x54, 0x00, 0x5d, 0xb2,
|
||||
0x4a, 0x2c, 0x24, 0x43, 0x4a, 0x88, 0x3e, 0x72, 0x61, 0x27, 0x40, 0x36, 0xd3, 0xab, 0xa9, 0x16,
|
||||
0xd6, 0x35, 0x31, 0x3a, 0x08, 0x3e, 0x51, 0xfa, 0xeb, 0xd8, 0x7b, 0xe1, 0x68, 0xc1, 0x87, 0x45,
|
||||
0x95, 0x30, 0xf9, 0xc5, 0xf4, 0xf2, 0x22, 0x96, 0xf0, 0x25, 0xc9, 0x85, 0xb5, 0xe4, 0x08, 0x79,
|
||||
0x35, 0x70, 0x4f, 0x5b, 0x57, 0x8e, 0x38, 0x49, 0x43, 0x14, 0x92, 0x5c, 0x0a, 0x33, 0x6d, 0x8a,
|
||||
0x95, 0x30, 0xf9, 0xd5, 0xf4, 0xf2, 0x22, 0x96, 0xf0, 0x25, 0xc9, 0x85, 0xb5, 0xe4, 0x08, 0x79,
|
||||
0x35, 0x70, 0xcf, 0x5b, 0x57, 0x8e, 0x38, 0x49, 0x43, 0x14, 0x92, 0x5c, 0x0a, 0x33, 0x6d, 0x8a,
|
||||
0x67, 0xd0, 0x16, 0x91, 0x8f, 0x8d, 0x5b, 0xc3, 0x49, 0x51, 0xaa, 0xc2, 0xdb, 0x1b, 0xf3, 0x52,
|
||||
0x97, 0xf0, 0xac, 0xdd, 0x11, 0x03, 0xae, 0xee, 0xd0, 0xa0, 0x33, 0x10, 0x89, 0xbd, 0xab, 0xcf,
|
||||
0xc8, 0x42, 0xdf, 0x50, 0x62, 0x78, 0x45, 0x00, 0xf6, 0xf0, 0xe7, 0xfd, 0xfd, 0x1d, 0x77, 0xea,
|
||||
0x8a, 0x40, 0xa3, 0x58, 0x90, 0x3f, 0x9d, 0x33, 0xa5, 0x5c, 0xb1, 0xbf, 0x5f, 0x5e, 0xbc, 0x40,
|
||||
0x69, 0xbe, 0x92, 0xbf, 0xd5, 0xd2, 0xba, 0x27, 0x5f, 0x09, 0xfc, 0x8e, 0xea, 0x2d, 0x3a, 0x2e,
|
||||
0x53, 0x16, 0xda, 0x6d, 0x85, 0x48, 0xc9, 0x29, 0xf2, 0x2e, 0xf4, 0x6f, 0xac, 0x43, 0x59, 0xdb,
|
||||
0x71, 0xfc, 0x88, 0xac, 0x08, 0xbe, 0x1a, 0xe7, 0xad, 0x5c, 0xb9, 0x2b, 0x58, 0x92, 0x8c, 0x64,
|
||||
0x19, 0xf6, 0x3b, 0x01, 0x4d, 0x01, 0x5f, 0x5f, 0x4d, 0xa6, 0xc8, 0xf0, 0x61, 0xe3, 0x10, 0x62,
|
||||
0x40, 0x9e, 0x94, 0xde, 0x93, 0xe7, 0xda, 0x14, 0xa7, 0x88, 0xe4, 0x93, 0xb6, 0x2a, 0xcb, 0x36,
|
||||
0xa9, 0x07, 0x9c, 0xe2, 0x8b, 0x44, 0x89, 0x28, 0x61, 0xec, 0xdb, 0xfd, 0x77, 0x61, 0x83, 0x3a,
|
||||
0xad, 0x95, 0x01, 0xde, 0xdf, 0x88, 0xbc, 0x06, 0x4b, 0xf2, 0xb0, 0x7f, 0xb0, 0x85, 0x2c, 0xc9,
|
||||
0x64, 0xb2, 0x7c, 0x59, 0x17, 0xdb, 0x3a, 0xef, 0x0f, 0xfa, 0x92, 0x5c, 0x88, 0x96, 0x72, 0x1d,
|
||||
0x21, 0x54, 0x49, 0x36, 0x18, 0xbe, 0xdd, 0xdf, 0xfb, 0xf9, 0xdd, 0x30, 0x40, 0xb1, 0xbf, 0xe5,
|
||||
0x27, 0xb0, 0xd7, 0x56, 0x22, 0xa1, 0x12, 0x9c, 0x8a, 0x19, 0xfe, 0x9f, 0x81, 0xcb, 0xe1, 0x22,
|
||||
0x9f, 0x64, 0x6a, 0xee, 0xf0, 0xf9, 0x0c, 0xe4, 0x6e, 0x74, 0x8e, 0x6f, 0xc7, 0x39, 0x3d, 0x5f,
|
||||
0x0b, 0x50, 0x36, 0xbd, 0x17, 0x95, 0xbd, 0xd0, 0xc9, 0x92, 0x8e, 0x80, 0xbf, 0x7d, 0x11, 0x4f,
|
||||
0x5a, 0x49, 0xd7, 0xc8, 0xd0, 0xd7, 0x55, 0xfb, 0xe5, 0x54, 0xaf, 0x4a, 0x2f, 0x17, 0x01, 0xe1,
|
||||
0x2f, 0x74, 0x41, 0x1b, 0xc0, 0x2e, 0x7a, 0x75, 0x21, 0xbd, 0x02, 0xff, 0xdd, 0xef, 0xf6, 0xdf,
|
||||
0x5e, 0xa9, 0x45, 0xb6, 0x79, 0xdd, 0x9e, 0x3d, 0x47, 0xa0, 0x0c, 0xbd, 0x3c, 0x95, 0x54, 0x01,
|
||||
0xfc, 0x1d, 0x92, 0x38, 0xc9, 0xeb, 0x54, 0xda, 0xc1, 0xc6, 0xbb, 0x20, 0xf8, 0xfd, 0xf7, 0xf6,
|
||||
0x09, 0xe5, 0x4a, 0x9f, 0xa7, 0x72, 0x2e, 0xea, 0xdc, 0xa1, 0xe8, 0x51, 0x0b, 0x3b, 0x65, 0x72,
|
||||
0xbb, 0xc6, 0x01, 0x95, 0xbc, 0xc3, 0x34, 0xe0, 0xde, 0xb2, 0x49, 0x20, 0x4e, 0x9c, 0xff, 0x9e,
|
||||
0xff, 0x20, 0x89, 0x5a, 0xef, 0xdb, 0x11, 0xfc, 0x30, 0xe0, 0x6f, 0x2e, 0xce, 0x4e, 0x41, 0xa2,
|
||||
0x36, 0x7d, 0xca, 0x51, 0x37, 0xd8, 0x6d, 0xd3, 0x60, 0x47, 0xdf, 0x04, 0xc9, 0xc7, 0x29, 0x8c,
|
||||
0x47, 0xd8, 0xd4, 0x32, 0x3b, 0x5a, 0x8f, 0x2f, 0x1b, 0x98, 0xaa, 0x9d, 0x4e, 0x74, 0xfe, 0xe0,
|
||||
0xc1, 0xc0, 0xb7, 0xa3, 0xfd, 0x70, 0xe0, 0xfb, 0x55, 0x4c, 0x3b, 0xf2, 0x89, 0xd3, 0x06, 0x08,
|
||||
0x92, 0xf2, 0x73, 0x27, 0x0b, 0x4a, 0xeb, 0xe4, 0xbc, 0xe2, 0xde, 0xd5, 0x66, 0x1b, 0xce, 0x17,
|
||||
0x15, 0x78, 0x84, 0xdc, 0x61, 0x97, 0x3a, 0x95, 0x11, 0xbb, 0x46, 0xc5, 0x5a, 0xc9, 0x24, 0xc5,
|
||||
0x91, 0x91, 0x6d, 0xec, 0xfc, 0x1a, 0x4c, 0x11, 0xde, 0x92, 0x68, 0x6f, 0x4b, 0x0c, 0xbd, 0xb4,
|
||||
0x20, 0xa0, 0x5d, 0x9e, 0xe5, 0x49, 0xfc, 0x53, 0xdf, 0x00, 0xd1, 0xff, 0xf8, 0x0f, 0x7e, 0xf9,
|
||||
0x88, 0xc3, 0xdd, 0x6d, 0xf3, 0x1a, 0xda, 0xe8, 0x83, 0x7d, 0x5a, 0xc5, 0x3f, 0x71, 0x8f, 0x6f,
|
||||
0x6f, 0x34, 0x6c, 0xbb, 0xee, 0xc8, 0x73, 0xc3, 0xf8, 0xaf, 0xaa, 0xa0, 0xfe, 0xcd, 0x6a, 0x93,
|
||||
0xa3, 0xc8, 0x3d, 0x5d, 0x24, 0x16, 0x1c, 0xfa, 0x04, 0x1b, 0xfd, 0x86, 0xd1, 0xb0, 0x99, 0x37,
|
||||
0x88, 0xcc, 0xc1, 0x91, 0xa4, 0x39, 0xe6, 0x40, 0x0b, 0xbd, 0x7d, 0x8e, 0xba, 0xe8, 0x31, 0x85,
|
||||
0x67, 0xfa, 0xf6, 0xde, 0xf2, 0x76, 0x1e, 0x99, 0xcc, 0x39, 0xc3, 0x34, 0x90, 0x69, 0xac, 0x54,
|
||||
0xda, 0xd2, 0x70, 0x90, 0xaa, 0x1b, 0xe6, 0x49, 0x25, 0x06, 0xc7, 0x01, 0x8e, 0xd5, 0xed, 0x77,
|
||||
0x99, 0xcc, 0xab, 0x13, 0x1a, 0x55, 0x10, 0x38, 0x87, 0x68, 0x50, 0xbb, 0x89, 0x79, 0xf3, 0xc0,
|
||||
0xa1, 0x35, 0xc9, 0x55, 0xb2, 0x8c, 0xf9, 0x0b, 0x52, 0xfb, 0x74, 0x34, 0x6c, 0x16, 0x60, 0x1a,
|
||||
0x44, 0x8c, 0xef, 0x3f, 0xd3, 0xdb, 0x1c, 0x3a, 0xa1, 0x43, 0x54, 0x41, 0xdb, 0x73, 0xb7, 0x4e,
|
||||
0xd8, 0x7a, 0x56, 0x28, 0xd8, 0x38, 0x11, 0x37, 0x72, 0xbb, 0x25, 0x33, 0x9d, 0xf8, 0xec, 0x70,
|
||||
0xdc, 0x9b, 0xb4, 0x93, 0x03, 0x7b, 0xc0, 0x5e, 0xfb, 0x3e, 0x4f, 0xf9, 0x59, 0x57, 0xc0, 0xe6,
|
||||
0x70, 0xdc, 0x8d, 0x35, 0xec, 0xfa, 0xfc, 0xe5, 0x11, 0x1b, 0xa9, 0xb2, 0xaa, 0x5d, 0x2b, 0xba,
|
||||
0x82, 0x73, 0x2b, 0x6d, 0x52, 0xee, 0x41, 0xc2, 0xfa, 0x66, 0x6e, 0xf2, 0xdf, 0xad, 0xfa, 0x17,
|
||||
0xbe, 0x3e, 0x02, 0x58, 0xe2, 0x23, 0xf2, 0x7c, 0x81, 0xa9, 0xcc, 0x3f, 0xa9, 0x72, 0xe7, 0x49,
|
||||
0x97, 0x28, 0x1b, 0xca, 0xe4, 0x98, 0x6f, 0x88, 0x83, 0x98, 0x30, 0x80, 0xac, 0x4a, 0x38, 0xa4,
|
||||
0x0f, 0x56, 0x3c, 0x59, 0xfc, 0x05, 0x6a, 0x48, 0x79, 0x81, 0x04, 0x03, 0xd3, 0x63, 0x7c, 0x32,
|
||||
0x2a, 0xe1, 0xcc, 0x0f, 0x5b, 0xd0, 0xb8, 0x9b, 0x70, 0x82, 0x3d, 0x62, 0xa9, 0x5a, 0x28, 0xc7,
|
||||
0xb0, 0x6d, 0x06, 0x26, 0x01, 0x26, 0x06, 0xf0, 0x53, 0x48, 0x7c, 0xd8, 0xa1, 0x4c, 0xe7, 0xda,
|
||||
0x1c, 0x7d, 0x37, 0x17, 0x34, 0x42, 0x3e, 0xf8, 0xee, 0xe7, 0xc7, 0x8f, 0x1f, 0x3f, 0x61, 0xaf,
|
||||
0xc8, 0x42, 0xdf, 0x50, 0x62, 0x78, 0x45, 0x00, 0xf6, 0xf0, 0xe9, 0xfe, 0xfe, 0x8e, 0x3b, 0x75,
|
||||
0x45, 0xa0, 0x51, 0x2c, 0xc8, 0x9f, 0xce, 0x99, 0x52, 0xae, 0xd8, 0xdf, 0x2f, 0x2f, 0x5e, 0xa1,
|
||||
0x34, 0xdf, 0xc8, 0xdf, 0x6a, 0x69, 0xdd, 0xb3, 0xaf, 0x04, 0x7e, 0x47, 0xf5, 0x16, 0x1d, 0x97,
|
||||
0x29, 0x0b, 0xed, 0xb6, 0x42, 0xa4, 0xe4, 0x14, 0x79, 0x17, 0xfa, 0x37, 0xd6, 0xa1, 0xac, 0xed,
|
||||
0x38, 0x7e, 0x4c, 0x56, 0x04, 0x5f, 0x8d, 0xf3, 0x56, 0xae, 0xdc, 0x15, 0x2c, 0x49, 0x46, 0xb2,
|
||||
0x0c, 0xfb, 0x9d, 0x80, 0xa6, 0x80, 0xaf, 0xaf, 0x26, 0x53, 0x64, 0xf8, 0xb0, 0x71, 0x08, 0x31,
|
||||
0x20, 0x4f, 0x4a, 0xef, 0xc9, 0x4b, 0x6d, 0x8a, 0x53, 0x44, 0xf2, 0x59, 0x5b, 0x95, 0x65, 0x9b,
|
||||
0xd4, 0x03, 0x4e, 0xf1, 0x45, 0xa2, 0x44, 0x94, 0x30, 0xf6, 0x97, 0xfd, 0x5f, 0xc3, 0x06, 0x75,
|
||||
0x5a, 0x2b, 0x03, 0xbc, 0xbf, 0x11, 0x79, 0x0d, 0x96, 0xe4, 0x61, 0xff, 0x60, 0x0b, 0x59, 0x92,
|
||||
0xc9, 0x64, 0xf9, 0xba, 0x2e, 0xb6, 0x75, 0xde, 0x1f, 0xf4, 0x25, 0xb9, 0x10, 0x2d, 0xe5, 0x3a,
|
||||
0x42, 0xa8, 0x92, 0x6c, 0x30, 0xfc, 0x65, 0x7f, 0xef, 0xe9, 0xaf, 0xc3, 0x00, 0xc5, 0xfe, 0x0b,
|
||||
0x3f, 0x81, 0xbd, 0xb6, 0x12, 0x09, 0x95, 0xe0, 0x54, 0xcc, 0xf0, 0xff, 0x0c, 0x5c, 0x0e, 0x17,
|
||||
0xf9, 0x24, 0x53, 0x73, 0x87, 0xcf, 0x17, 0x20, 0x77, 0xa3, 0x73, 0x7c, 0x3b, 0xce, 0xe9, 0xf9,
|
||||
0x5a, 0x80, 0xb2, 0xe9, 0xbd, 0xa8, 0xec, 0x85, 0x4e, 0x96, 0x74, 0x04, 0xfc, 0xed, 0x8b, 0x78,
|
||||
0xd2, 0x4a, 0xba, 0x46, 0x86, 0xbe, 0xad, 0xda, 0x2f, 0xa7, 0x7a, 0x55, 0x7a, 0xb9, 0x08, 0x08,
|
||||
0x7f, 0xa5, 0x0b, 0xda, 0x00, 0x76, 0xd1, 0xab, 0x0b, 0xe9, 0x15, 0xf8, 0xef, 0x7e, 0xb7, 0xff,
|
||||
0xf6, 0x46, 0x2d, 0xb2, 0xcd, 0xeb, 0xf6, 0xec, 0x39, 0x02, 0x65, 0xe8, 0xe5, 0xa9, 0xa4, 0x0a,
|
||||
0xe0, 0xbf, 0x22, 0x89, 0x93, 0xbc, 0x4e, 0xa5, 0x1d, 0x6c, 0xbc, 0x0b, 0x82, 0xdf, 0x7f, 0x6f,
|
||||
0x9f, 0x50, 0xae, 0xf4, 0x79, 0x2a, 0xe7, 0xa2, 0xce, 0x1d, 0x8a, 0x1e, 0xb5, 0xb0, 0x53, 0x26,
|
||||
0xb7, 0x6b, 0x1c, 0x50, 0xc9, 0x3b, 0x4c, 0x03, 0xee, 0x2d, 0x9b, 0x04, 0xe2, 0xc4, 0xf9, 0xef,
|
||||
0xf9, 0x43, 0x49, 0xd4, 0x7a, 0xdf, 0x8e, 0xe0, 0xe1, 0x80, 0xbf, 0xbb, 0x38, 0x3b, 0x05, 0x89,
|
||||
0xda, 0xf4, 0x39, 0x47, 0xdd, 0x60, 0xb7, 0x4d, 0x83, 0x1d, 0x7d, 0x13, 0x24, 0x1f, 0xa7, 0x30,
|
||||
0x1e, 0x61, 0x53, 0xcb, 0xec, 0x68, 0x3d, 0xbe, 0x6c, 0x60, 0xaa, 0x76, 0x3a, 0xd1, 0xf9, 0x83,
|
||||
0x07, 0x03, 0xdf, 0x8e, 0xf6, 0xc3, 0x81, 0xef, 0x57, 0x31, 0xed, 0xc8, 0x27, 0x4e, 0x1b, 0x20,
|
||||
0x48, 0xca, 0xcf, 0x9d, 0x2c, 0x28, 0xad, 0x93, 0xf3, 0x8a, 0x7b, 0x57, 0x9b, 0x6d, 0x38, 0x5f,
|
||||
0x54, 0xe0, 0x11, 0x72, 0x87, 0x5d, 0xea, 0x54, 0x46, 0xec, 0x1a, 0x15, 0x6b, 0x25, 0x93, 0x14,
|
||||
0x47, 0x46, 0xb6, 0xb1, 0xf3, 0x6b, 0x30, 0x45, 0x78, 0x4b, 0xa2, 0xbd, 0x2d, 0x31, 0xf4, 0xd2,
|
||||
0x82, 0x80, 0x76, 0x79, 0x96, 0x27, 0xf1, 0xcf, 0x7d, 0x03, 0x44, 0xff, 0xe3, 0x0f, 0xfd, 0xf2,
|
||||
0x11, 0x87, 0xbb, 0xdb, 0xe6, 0x35, 0xb4, 0xd1, 0x07, 0xfb, 0xbc, 0x8a, 0x7f, 0xe4, 0x1e, 0xdf,
|
||||
0xde, 0x68, 0xd8, 0x76, 0xdd, 0x91, 0xe7, 0x86, 0xf1, 0x5f, 0x55, 0x41, 0xfd, 0x9b, 0xd5, 0x26,
|
||||
0x47, 0x91, 0x7b, 0xba, 0x48, 0x2c, 0x38, 0xf4, 0x19, 0x36, 0xfa, 0x0d, 0xa3, 0x61, 0x33, 0x6f,
|
||||
0x10, 0x99, 0x83, 0x23, 0x49, 0x73, 0xcc, 0x81, 0x16, 0x7a, 0xfb, 0x1c, 0x75, 0xd1, 0x63, 0x0a,
|
||||
0xcf, 0xf4, 0xed, 0xbd, 0xe5, 0xed, 0x3c, 0x32, 0x99, 0x73, 0x86, 0x69, 0x20, 0xd3, 0x58, 0xa9,
|
||||
0xb4, 0xa5, 0xe1, 0x20, 0x55, 0x37, 0xcc, 0x93, 0x4a, 0x0c, 0x8e, 0x03, 0x1c, 0xab, 0xdb, 0xef,
|
||||
0x32, 0x99, 0x57, 0x27, 0x34, 0xaa, 0x20, 0x70, 0x0e, 0xd1, 0xa0, 0x76, 0x13, 0xf3, 0xe6, 0x81,
|
||||
0x43, 0x6b, 0x92, 0xab, 0x64, 0x19, 0xf3, 0x57, 0xa4, 0xf6, 0xf9, 0x68, 0xd8, 0x2c, 0xc0, 0x34,
|
||||
0x88, 0x18, 0xdf, 0x7f, 0xa6, 0xb7, 0x39, 0x74, 0x42, 0x87, 0xa8, 0x82, 0xb6, 0xe7, 0x6e, 0x9d,
|
||||
0xb0, 0xf5, 0xac, 0x50, 0xb0, 0x71, 0x22, 0x6e, 0xe4, 0x76, 0x4b, 0x66, 0x3a, 0xf1, 0xd9, 0xe1,
|
||||
0xb8, 0x37, 0x69, 0x27, 0x07, 0xf6, 0x80, 0xbd, 0xf5, 0x7d, 0x9e, 0xf2, 0xb3, 0xae, 0x80, 0xcd,
|
||||
0xe1, 0xb8, 0x1b, 0x6b, 0xd8, 0xf5, 0xf9, 0xeb, 0x23, 0x36, 0x52, 0x65, 0x55, 0xbb, 0x56, 0x74,
|
||||
0x05, 0xe7, 0x56, 0xda, 0xa4, 0xdc, 0x83, 0x84, 0xf5, 0xcd, 0xdc, 0xe4, 0xbf, 0x5b, 0xf5, 0x2f,
|
||||
0x7c, 0x7d, 0x0c, 0xb0, 0xc4, 0x47, 0xe4, 0xf9, 0x02, 0x53, 0x99, 0x7f, 0x52, 0xe5, 0xce, 0x93,
|
||||
0x2e, 0x51, 0x36, 0x94, 0xc9, 0x31, 0xdf, 0x10, 0x07, 0x31, 0x61, 0x00, 0x59, 0x95, 0x70, 0x48,
|
||||
0x1f, 0xac, 0x78, 0xb2, 0xf8, 0x0b, 0xd4, 0x90, 0xf2, 0x02, 0x09, 0x06, 0xa6, 0xc7, 0xf8, 0x64,
|
||||
0x54, 0xc2, 0x99, 0x1f, 0xb6, 0xa0, 0x71, 0x37, 0xe1, 0x04, 0x7b, 0xcc, 0x52, 0xb5, 0x50, 0x8e,
|
||||
0x61, 0xdb, 0x0c, 0x4c, 0x02, 0x4c, 0x0c, 0xe0, 0xa7, 0x90, 0xf8, 0xb0, 0x43, 0x99, 0xce, 0xb5,
|
||||
0x39, 0xfa, 0x6e, 0x2e, 0x68, 0x84, 0x7c, 0xf0, 0xdd, 0xd3, 0x27, 0x4f, 0x9e, 0x3c, 0x63, 0x6f,
|
||||
0x4b, 0x59, 0x26, 0x66, 0x5d, 0x39, 0x99, 0x32, 0x67, 0x44, 0x69, 0x0b, 0x65, 0x2d, 0x55, 0x08,
|
||||
0x3b, 0x41, 0xc7, 0x33, 0xa8, 0xf5, 0xd2, 0xb1, 0x55, 0x26, 0xa9, 0x7e, 0x73, 0x4c, 0x2d, 0xd4,
|
||||
0x34, 0xe1, 0x6a, 0xc8, 0x52, 0xcd, 0x5e, 0x5e, 0x4d, 0x19, 0x48, 0x89, 0xad, 0x75, 0x6d, 0xd8,
|
||||
0x34, 0xe1, 0x6a, 0xc8, 0x52, 0xcd, 0x5e, 0x5f, 0x4d, 0x19, 0x48, 0x89, 0xad, 0x75, 0x6d, 0xd8,
|
||||
0x4c, 0x94, 0x4b, 0x2c, 0xd2, 0x82, 0x36, 0x21, 0x9b, 0x9c, 0x5f, 0x86, 0x4c, 0xba, 0x24, 0x62,
|
||||
0x95, 0x2a, 0xfb, 0xbd, 0x2e, 0xb0, 0x66, 0x4c, 0xdc, 0xc5, 0x56, 0xca, 0x40, 0x9a, 0xb5, 0x6c,
|
||||
0x70, 0x35, 0x3d, 0x0e, 0x98, 0xd5, 0x73, 0xb7, 0x12, 0x46, 0xb2, 0x66, 0xe4, 0xba, 0x83, 0xb9,
|
||||
0x07, 0x69, 0xa6, 0x3f, 0x76, 0xc9, 0xf8, 0xf2, 0xca, 0xe7, 0x95, 0x19, 0x5f, 0x23, 0x18, 0x55,
|
||||
0x66, 0x00, 0xc2, 0x17, 0xa3, 0xd4, 0x9c, 0xb8, 0xba, 0xbe, 0x15, 0x91, 0x87, 0x87, 0x2d, 0x3a,
|
||||
0x07, 0x69, 0xa6, 0x3f, 0x76, 0xc9, 0xf8, 0xfa, 0xca, 0xe7, 0x95, 0x19, 0x5f, 0x23, 0x18, 0x55,
|
||||
0x66, 0x00, 0xc2, 0x17, 0xa3, 0xd4, 0x9c, 0xb8, 0xba, 0xbe, 0x15, 0x91, 0x47, 0x87, 0x2d, 0x3a,
|
||||
0x53, 0x0d, 0xf4, 0x68, 0x00, 0x66, 0x30, 0x23, 0x64, 0xc8, 0x79, 0xd6, 0x4d, 0x94, 0x0c, 0xe3,
|
||||
0x95, 0x45, 0xa3, 0x22, 0xe7, 0x58, 0x29, 0x09, 0x1d, 0xcd, 0x44, 0x6e, 0x75, 0x8b, 0xb7, 0xcb,
|
||||
0x24, 0x26, 0x07, 0x63, 0x00, 0x09, 0xeb, 0xd4, 0xf5, 0xbd, 0x55, 0xd3, 0x4c, 0x6e, 0xde, 0xd0,
|
||||
@@ -1669,54 +1670,54 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||
0x42, 0x7d, 0xe6, 0x1d, 0x1d, 0xa9, 0x6d, 0x4e, 0x53, 0x95, 0x20, 0xd9, 0x9a, 0x69, 0x86, 0x30,
|
||||
0x07, 0x03, 0xac, 0x1b, 0xeb, 0xbc, 0x6e, 0x35, 0xf7, 0xea, 0x73, 0x0a, 0x13, 0xb6, 0xa5, 0x8d,
|
||||
0x49, 0x69, 0x7f, 0x34, 0x54, 0x0d, 0xea, 0xa7, 0xb2, 0x5c, 0x33, 0x91, 0x24, 0x14, 0x3e, 0x60,
|
||||
0xf2, 0x46, 0x3d, 0x57, 0xac, 0xe3, 0x26, 0x3a, 0x4d, 0x27, 0x65, 0xfa, 0x27, 0x31, 0xbc, 0x7a,
|
||||
0xd3, 0xc6, 0x90, 0xfe, 0x9e, 0x8b, 0x04, 0xf4, 0x48, 0x90, 0x43, 0xce, 0x9f, 0x1c, 0x7c, 0x35,
|
||||
0xf2, 0x4e, 0xbd, 0x54, 0xac, 0xe3, 0x26, 0x3a, 0x4d, 0x27, 0x65, 0xfa, 0x27, 0x31, 0xbc, 0x7a,
|
||||
0xd7, 0xc6, 0x90, 0xfe, 0x5e, 0x8a, 0x04, 0xf4, 0x48, 0x90, 0x43, 0xce, 0x9f, 0x1c, 0x7c, 0x33,
|
||||
0x69, 0x63, 0x77, 0x9c, 0xe7, 0x5b, 0xb5, 0xa2, 0x4c, 0x59, 0x3b, 0x2c, 0x22, 0xb7, 0xb0, 0x02,
|
||||
0xc0, 0x25, 0x25, 0x46, 0x87, 0xad, 0x19, 0xff, 0x1f, 0x95, 0x70, 0xbc, 0x83, 0xb7, 0x87, 0x0f,
|
||||
0x18, 0xc3, 0x18, 0xa4, 0x85, 0x43, 0x90, 0x97, 0x3e, 0x06, 0x8a, 0xb2, 0x22, 0x91, 0x34, 0x3a,
|
||||
0x82, 0x39, 0x9b, 0x31, 0xb1, 0xcb, 0x7a, 0x62, 0x9e, 0xec, 0xe1, 0x78, 0xd2, 0x65, 0x79, 0x43,
|
||||
0x38, 0xa0, 0x9a, 0x87, 0xe3, 0x3f, 0xa1, 0xc7, 0xd7, 0xc4, 0x74, 0xbd, 0x4b, 0x51, 0xd6, 0x22,
|
||||
0x82, 0x39, 0x9b, 0x31, 0xb1, 0xcb, 0x7a, 0x62, 0x9e, 0xec, 0xd1, 0x78, 0xd2, 0x65, 0x79, 0x43,
|
||||
0x38, 0xa0, 0x9a, 0x47, 0xe3, 0x3f, 0xa1, 0xc7, 0xb7, 0xc4, 0x74, 0xbd, 0x4b, 0x51, 0xd6, 0x22,
|
||||
0xf7, 0x61, 0xe9, 0x8e, 0x6e, 0x78, 0xcf, 0x8c, 0xcf, 0x9a, 0x0c, 0x3e, 0x36, 0x69, 0xad, 0x4a,
|
||||
0x8d, 0x4d, 0x5f, 0x44, 0xb0, 0x65, 0xaa, 0xe3, 0x2b, 0xbe, 0xb1, 0x89, 0x58, 0xb4, 0xae, 0x40,
|
||||
0x82, 0xaf, 0x30, 0xd1, 0x69, 0xd3, 0x1a, 0x25, 0x3a, 0x16, 0x9f, 0x39, 0x8c, 0xd0, 0xe5, 0xb2,
|
||||
0x82, 0x6f, 0x30, 0xd1, 0x69, 0xd3, 0x1a, 0x25, 0x3a, 0x16, 0x9f, 0x39, 0x8c, 0xd0, 0xe5, 0xb2,
|
||||
0x61, 0xbb, 0x76, 0x5c, 0x67, 0xbd, 0x0c, 0x09, 0x17, 0xf3, 0x61, 0x0b, 0x38, 0xba, 0x11, 0xd9,
|
||||
0xdc, 0xb5, 0x66, 0x54, 0x5f, 0x3b, 0xb5, 0x77, 0xc2, 0xdb, 0xe7, 0xd1, 0x50, 0x6c, 0x02, 0x31,
|
||||
0xee, 0xb5, 0xfa, 0x36, 0x8b, 0x3e, 0x4b, 0x77, 0xac, 0xf6, 0x03, 0x7b, 0x1b, 0x73, 0x3f, 0x93,
|
||||
0xf9, 0x94, 0xab, 0x70, 0x0f, 0x6d, 0xf4, 0x8d, 0x59, 0x07, 0x5d, 0xef, 0x7e, 0xec, 0xbe, 0xdf,
|
||||
0x99, 0x63, 0xd3, 0x68, 0x32, 0x8f, 0x48, 0x4a, 0x78, 0xc7, 0xea, 0xe0, 0xfb, 0xf1, 0x6b, 0xbf,
|
||||
0x99, 0x63, 0xd3, 0x68, 0x32, 0x8f, 0x48, 0x4a, 0x78, 0xc7, 0xea, 0xe0, 0xfb, 0xf1, 0x5b, 0xbf,
|
||||
0x6d, 0x83, 0x68, 0x93, 0x94, 0x1b, 0xb6, 0xfa, 0x32, 0x14, 0x9d, 0x97, 0xac, 0x45, 0x03, 0xd0,
|
||||
0xb4, 0x48, 0xf4, 0xb6, 0x50, 0x10, 0x5e, 0x1d, 0x0c, 0xb7, 0xee, 0x19, 0xb7, 0xc0, 0xe8, 0xb0,
|
||||
0xb8, 0xbd, 0x63, 0x8b, 0x48, 0xef, 0x7e, 0x48, 0x0e, 0xbf, 0x8c, 0xc9, 0x17, 0x3a, 0xe7, 0xbd,
|
||||
0x98, 0x1c, 0x86, 0x3b, 0xc6, 0x7f, 0x0e, 0xc8, 0x0e, 0x1e, 0x54, 0x41, 0xbd, 0xaf, 0x95, 0x50,
|
||||
0xe3, 0x08, 0xb5, 0x88, 0x16, 0x9d, 0xe1, 0xed, 0xcb, 0x95, 0x2f, 0xcd, 0xab, 0x5f, 0xcf, 0x5e,
|
||||
0xbd, 0x79, 0x75, 0x3e, 0x3d, 0x6b, 0xfa, 0x06, 0xe8, 0xd6, 0x50, 0x8f, 0xb9, 0xf7, 0x44, 0xe4,
|
||||
0xe3, 0x08, 0xb5, 0x88, 0x16, 0x9d, 0xe1, 0xed, 0xcb, 0x95, 0x2f, 0xcd, 0xab, 0x9f, 0xcf, 0xde,
|
||||
0xbc, 0x7b, 0x73, 0x3e, 0x3d, 0x6b, 0xfa, 0x06, 0xe8, 0xd6, 0x50, 0x8f, 0xb9, 0xf7, 0x44, 0xe4,
|
||||
0xc3, 0xd1, 0xa3, 0x4b, 0x58, 0x43, 0xb5, 0xb7, 0xe5, 0x15, 0x82, 0x48, 0xe3, 0xb7, 0x1a, 0xdd,
|
||||
0x04, 0x0d, 0x70, 0xbe, 0x4b, 0x23, 0x0c, 0x5c, 0x6e, 0xe4, 0x9e, 0x27, 0xc6, 0xf6, 0xa2, 0xe7,
|
||||
0xd5, 0x9d, 0x4d, 0xae, 0xa3, 0xb6, 0x2e, 0x9f, 0xdf, 0x43, 0xf7, 0xe1, 0x86, 0xba, 0xad, 0x27,
|
||||
0xd5, 0x9d, 0x4d, 0xae, 0xa3, 0xb6, 0x2e, 0x5f, 0xde, 0x43, 0xf7, 0xe1, 0x86, 0xba, 0xad, 0x27,
|
||||
0x47, 0x22, 0xe0, 0x19, 0x55, 0x7e, 0x8a, 0xde, 0x14, 0x75, 0x55, 0x73, 0x3c, 0xc3, 0x05, 0xab,
|
||||
0x2b, 0x95, 0xb6, 0x1c, 0xba, 0x1f, 0x2d, 0xd0, 0x82, 0xb3, 0x7a, 0x16, 0xe1, 0xd6, 0x38, 0xbc,
|
||||
0xd4, 0xba, 0xc4, 0x6c, 0x58, 0xa3, 0xd3, 0x0d, 0x69, 0x20, 0x1c, 0xa2, 0x75, 0x0b, 0xb3, 0xa0,
|
||||
0x1f, 0x53, 0xde, 0xcf, 0x72, 0xf4, 0x4b, 0x3e, 0xa6, 0xd7, 0x97, 0x97, 0x94, 0x0d, 0x3d, 0x76,
|
||||
0x23, 0x0d, 0xf1, 0x0d, 0xdb, 0x8f, 0x0e, 0x1e, 0x45, 0xfb, 0x7b, 0xb3, 0x83, 0x1f, 0xa3, 0xc3,
|
||||
0x47, 0xec, 0xbf, 0xff, 0xfe, 0x0f, 0x61, 0x30, 0x48, 0x02, 0x76, 0xb8, 0x7f, 0xf8, 0x90, 0x7d,
|
||||
0x55, 0xe3, 0xb1, 0x32, 0x89, 0xd6, 0x7a, 0xa9, 0x64, 0xa3, 0x90, 0xee, 0xae, 0x70, 0x63, 0x58,
|
||||
0x08, 0x55, 0x46, 0x51, 0xb4, 0x63, 0xd0, 0x11, 0xad, 0x1f, 0x15, 0x68, 0x19, 0xc8, 0x8f, 0xbb,
|
||||
0x56, 0xfd, 0xe2, 0x25, 0xb2, 0x9d, 0xed, 0xcd, 0x40, 0xfb, 0x4c, 0x17, 0x18, 0xac, 0xd8, 0x71,
|
||||
0x8d, 0x49, 0xd0, 0x6c, 0x0b, 0x1a, 0x7f, 0x73, 0xe2, 0x41, 0x60, 0xfc, 0x4d, 0xd6, 0xdd, 0x0f,
|
||||
0xc7, 0xd1, 0x46, 0xee, 0xb7, 0xc8, 0x5a, 0xa9, 0xa5, 0x1a, 0xfa, 0x3b, 0x13, 0x5d, 0x15, 0x60,
|
||||
0xdd, 0x1e, 0x7a, 0xc2, 0x5e, 0x62, 0x64, 0xaa, 0xa8, 0x48, 0x3f, 0x73, 0x71, 0x77, 0x2b, 0x66,
|
||||
0x16, 0x49, 0xb7, 0x3f, 0xf0, 0xbf, 0x92, 0x4d, 0x33, 0xb1, 0x95, 0x4c, 0x14, 0x38, 0xd7, 0xa1,
|
||||
0x2f, 0x2e, 0x37, 0x9e, 0xf6, 0x8e, 0x59, 0x56, 0xa3, 0x6d, 0xfa, 0xb7, 0x7e, 0x32, 0x40, 0x03,
|
||||
0xc4, 0x9d, 0xc7, 0xac, 0x71, 0x09, 0x47, 0xc7, 0xd6, 0x8c, 0xc6, 0x5e, 0xe4, 0x0a, 0x9a, 0x43,
|
||||
0xf3, 0xfb, 0x8c, 0xc7, 0xad, 0xdf, 0xa1, 0xd4, 0x6b, 0xa2, 0x78, 0xf0, 0xd3, 0x9e, 0x0f, 0xe5,
|
||||
0xb3, 0xcc, 0xe0, 0x86, 0xab, 0xd0, 0x3d, 0x26, 0x49, 0xb6, 0xa2, 0xdf, 0x07, 0xda, 0x66, 0x7d,
|
||||
0x81, 0x36, 0x8e, 0xab, 0x17, 0x72, 0x0e, 0x46, 0x35, 0xb3, 0xc6, 0x37, 0x81, 0x31, 0xcb, 0xf5,
|
||||
0x0c, 0x31, 0xc7, 0xed, 0xd9, 0x0c, 0x2f, 0xce, 0x9f, 0x9d, 0xbd, 0x9c, 0x9c, 0x7d, 0x8e, 0x75,
|
||||
0xef, 0xf2, 0x7c, 0xca, 0xf2, 0x46, 0x93, 0x77, 0x10, 0x0d, 0xbe, 0x33, 0x74, 0x22, 0x0d, 0xbc,
|
||||
0x82, 0x1b, 0xd6, 0x62, 0x4c, 0x40, 0x43, 0xc1, 0x5d, 0xb5, 0xec, 0x98, 0xd0, 0xaa, 0x8a, 0x13,
|
||||
0x67, 0xf9, 0x7b, 0x3c, 0xf3, 0x57, 0x73, 0x6a, 0x75, 0xb4, 0xa5, 0xe9, 0x2b, 0xc4, 0x13, 0xc4,
|
||||
0x92, 0xcd, 0x6f, 0x1f, 0x5f, 0x1d, 0xea, 0x3f, 0x9f, 0xe9, 0x7b, 0xdf, 0x34, 0xd4, 0x0f, 0xa9,
|
||||
0xdb, 0xe2, 0x83, 0xee, 0x32, 0x74, 0xb1, 0xa1, 0x9f, 0x57, 0xff, 0x07, 0xbb, 0x00, 0x76, 0x73,
|
||||
0x23, 0x0d, 0xf1, 0x0d, 0xdb, 0x8f, 0x0e, 0x1e, 0x47, 0xfb, 0x7b, 0xb3, 0x83, 0x1f, 0xa2, 0xc3,
|
||||
0x1f, 0xd8, 0x7f, 0xff, 0xfd, 0x1f, 0xc2, 0x60, 0x90, 0x04, 0xec, 0x70, 0xff, 0xf0, 0x11, 0xfb,
|
||||
0xaa, 0xc6, 0x63, 0x65, 0x12, 0xad, 0xf5, 0x52, 0xc9, 0x46, 0x21, 0xdd, 0x5d, 0xe1, 0xc6, 0xb0,
|
||||
0x10, 0xaa, 0x8c, 0xa2, 0x68, 0xc7, 0xa0, 0x23, 0x5a, 0x3f, 0x2a, 0xd0, 0x32, 0x90, 0x1f, 0x77,
|
||||
0xad, 0xfa, 0xc9, 0x4b, 0x64, 0x3b, 0xdb, 0x9b, 0x81, 0xf6, 0x85, 0x2e, 0x30, 0x58, 0xb1, 0xe3,
|
||||
0x1a, 0x93, 0xa0, 0xd9, 0x16, 0x34, 0xfe, 0xe6, 0xc4, 0x83, 0xc0, 0xf8, 0x9b, 0xac, 0xbb, 0x1f,
|
||||
0x8e, 0xa3, 0x8d, 0xdc, 0x6f, 0x91, 0xb5, 0x52, 0x4b, 0x35, 0xf4, 0x77, 0x26, 0xba, 0x2a, 0xc0,
|
||||
0xba, 0x3d, 0xf4, 0x84, 0xbd, 0xc4, 0xc8, 0x54, 0x51, 0x91, 0x7e, 0xe6, 0xe2, 0xee, 0x56, 0xcc,
|
||||
0x2c, 0x92, 0x6e, 0x7f, 0xe0, 0x7f, 0x25, 0x9b, 0x66, 0x62, 0x2b, 0x99, 0x28, 0x70, 0xae, 0x43,
|
||||
0x5f, 0x5c, 0x6e, 0x3c, 0xed, 0x1d, 0xb3, 0xac, 0x46, 0xdb, 0xf4, 0x6f, 0xfd, 0x64, 0x80, 0x06,
|
||||
0x88, 0x3b, 0x8f, 0x59, 0xe3, 0x12, 0x8e, 0x8e, 0xad, 0x19, 0x8d, 0xbd, 0xc8, 0x15, 0x34, 0x87,
|
||||
0xe6, 0xf7, 0x19, 0x8f, 0x5b, 0xbf, 0x43, 0xa9, 0xd7, 0x44, 0xf1, 0xe0, 0xc7, 0x3d, 0x1f, 0xca,
|
||||
0x17, 0x99, 0xc1, 0x0d, 0x57, 0xa1, 0x7b, 0x4c, 0x92, 0x6c, 0x45, 0xbf, 0x0f, 0xb4, 0xcd, 0xfa,
|
||||
0x02, 0x6d, 0x1c, 0x57, 0x2f, 0xe4, 0x1c, 0x8c, 0x6a, 0x66, 0x8d, 0x6f, 0x02, 0x63, 0x96, 0xeb,
|
||||
0x19, 0x62, 0x8e, 0xdb, 0xb3, 0x19, 0x5e, 0x9c, 0xbf, 0x38, 0x7b, 0x3d, 0x39, 0xfb, 0x1c, 0xeb,
|
||||
0xde, 0xe5, 0xf9, 0x94, 0xe5, 0x8d, 0x26, 0xef, 0x20, 0x1a, 0x7c, 0x67, 0xe8, 0x44, 0x1a, 0x78,
|
||||
0x05, 0x37, 0xac, 0xc5, 0x98, 0x80, 0x86, 0x82, 0xbb, 0x6a, 0xd9, 0x31, 0xa1, 0x55, 0x15, 0x27,
|
||||
0xce, 0xf2, 0xf7, 0x78, 0xe6, 0xaf, 0xe6, 0xd4, 0xea, 0x68, 0x4b, 0xd3, 0x57, 0x88, 0x27, 0x88,
|
||||
0x25, 0x9b, 0xdf, 0x3e, 0xbe, 0x3a, 0xd4, 0x7f, 0x3e, 0xd3, 0xf7, 0xbe, 0x69, 0xa8, 0x1f, 0x52,
|
||||
0xb7, 0xc5, 0x07, 0xdd, 0x65, 0xe8, 0x62, 0x43, 0x3f, 0xaf, 0xfe, 0x0f, 0x87, 0x6f, 0x85, 0x49,
|
||||
0x6e, 0x15, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ void sendImprovInfoResponse() {
|
||||
out[11] = 4; //Firmware len ("WLED")
|
||||
out[12] = 'W'; out[13] = 'L'; out[14] = 'E'; out[15] = 'D';
|
||||
uint8_t lengthSum = 17;
|
||||
uint8_t vlen = sprintf_P(out+lengthSum,PSTR("0.14.0-b15.24/%i"),VERSION);
|
||||
uint8_t vlen = sprintf_P(out+lengthSum,PSTR("0.14.0-b15.25/%i"),VERSION);
|
||||
out[16] = vlen; lengthSum += vlen;
|
||||
uint8_t hlen = 7;
|
||||
#ifdef ESP8266
|
||||
|
||||
@@ -27,22 +27,22 @@ const ethernet_settings ethernetBoards[] = {
|
||||
// These pins do not appear to work from my testing:
|
||||
// IO35, IO36, IO39
|
||||
{
|
||||
1, // eth_address,
|
||||
16, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_LAN8720, // eth_type,
|
||||
ETH_CLOCK_GPIO0_IN // eth_clk_mode
|
||||
1, // eth_address,
|
||||
16, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_LAN8720, // eth_type,
|
||||
ETH_CLOCK_GPIO0_IN // eth_clk_mode
|
||||
},
|
||||
|
||||
// ESP32-POE
|
||||
{
|
||||
0, // eth_address,
|
||||
12, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_LAN8720, // eth_type,
|
||||
ETH_CLOCK_GPIO17_OUT // eth_clk_mode
|
||||
0, // eth_address,
|
||||
12, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_LAN8720, // eth_type,
|
||||
ETH_CLOCK_GPIO17_OUT // eth_clk_mode
|
||||
},
|
||||
|
||||
// WESP32
|
||||
@@ -88,11 +88,11 @@ const ethernet_settings ethernetBoards[] = {
|
||||
// ESP32-ETHERNET-KIT-VE
|
||||
{
|
||||
0, // eth_address,
|
||||
5, // eth_power,
|
||||
5, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_IP101, // eth_type,
|
||||
ETH_CLOCK_GPIO0_IN // eth_clk_mode
|
||||
ETH_PHY_IP101, // eth_type,
|
||||
ETH_CLOCK_GPIO0_IN // eth_clk_mode
|
||||
},
|
||||
|
||||
// QuinLed-Dig-Octa Brainboard-32-8L and LilyGO-T-ETH-POE
|
||||
@@ -115,6 +115,15 @@ const ethernet_settings ethernetBoards[] = {
|
||||
ETH_CLOCK_GPIO17_OUT // eth_clk_mode
|
||||
},
|
||||
|
||||
// Serg74-ESP32 Ethernet Shield
|
||||
{
|
||||
1, // eth_address,
|
||||
5, // eth_power,
|
||||
23, // eth_mdc,
|
||||
18, // eth_mdio,
|
||||
ETH_PHY_LAN8720, // eth_type,
|
||||
ETH_CLOCK_GPIO17_OUT // eth_clk_mode
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ void realtimeLock(uint32_t timeoutMs, byte md)
|
||||
void exitRealtime() {
|
||||
if (!realtimeMode) return;
|
||||
if (realtimeOverride == REALTIME_OVERRIDE_ONCE) realtimeOverride = REALTIME_OVERRIDE_NONE;
|
||||
strip.setBrightness(scaledBri(bri));
|
||||
strip.setBrightness(scaledBri(bri), true);
|
||||
realtimeTimeout = 0; // cancel realtime mode immediately
|
||||
realtimeMode = REALTIME_MODE_INACTIVE; // inform UI immediately
|
||||
realtimeIP[0] = 0;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
// version code in format yymmddb (b = daily build)
|
||||
#define VERSION 2305161
|
||||
#define VERSION 2305170
|
||||
|
||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||
//#define WLED_USE_MY_CONFIG
|
||||
|
||||
Reference in New Issue
Block a user