Merge remote-tracking branch 'origin/ac_main' into mdev
This commit is contained in:
@@ -446,7 +446,7 @@ lib_deps = ${esp32c3.lib_deps}
|
||||
; https://github.com/blazoncek/arduinoFFT.git
|
||||
|
||||
[env:esp32s3dev_8MB]
|
||||
;; ESP32-S3-DevKitC-1 development board, with 8MB FLASH, no PSRAM
|
||||
;; ESP32-S3-DevKitC-1 development board, with 8MB FLASH, no PSRAM (flash_mode: qio)
|
||||
board = esp32-s3-devkitc-1
|
||||
;platform = espressif32@5.1.1
|
||||
;platform_packages = platformio/framework-arduinoespressif32@3.20004.220825
|
||||
@@ -466,6 +466,26 @@ board_build.f_flash = 80000000L
|
||||
board_build.flash_mode = qio
|
||||
monitor_filters = esp32_exception_decoder
|
||||
|
||||
[env:esp32s3dev_8MB_PSRAM]
|
||||
;; ESP32-TinyS3 development board, with 8MB FLASH and 8MB PSRAM (memory_type: qio_opi, qio_qspi, or opi_opi)
|
||||
;board = um_tinys3 ; -> needs workaround from https://github.com/Aircoookie/WLED/pull/2905#issuecomment-1328049860
|
||||
;board = esp32s3box ; -> error: 'esp32_adc2gpio' was not declared in this scope
|
||||
board = esp32-s3-devkitc-1 ; -> compiles, but does not support PSRAM
|
||||
platform = espressif32 @ ~5.2.0
|
||||
platform_packages =
|
||||
upload_speed = 921600
|
||||
build_unflags = ${common.build_unflags}
|
||||
build_flags = ${common.build_flags} ${esp32s3.build_flags}
|
||||
-D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0 -D ARDUINO_USB_MODE=1 -D ARDUINO_USB_MSC_ON_BOOT=0
|
||||
; -D ARDUINO_USB_CDC_ON_BOOT=0
|
||||
; -D WLED_RELEASE_NAME=ESP32-S3_PSRAM
|
||||
-D WLED_USE_PSRAM -DBOARD_HAS_PSRAM ; tells WLED that PSRAM shall be used
|
||||
lib_deps = ${esp32s3.lib_deps}
|
||||
board_build.partitions = tools/WLED_ESP32_8MB.csv
|
||||
board_build.f_flash = 80000000L
|
||||
board_build.flash_mode = qio
|
||||
monitor_filters = esp32_exception_decoder
|
||||
|
||||
[env:esp8285_4CH_MagicHome]
|
||||
board = esp8285
|
||||
platform = ${common.platform_wled_default}
|
||||
|
||||
@@ -16,14 +16,15 @@ private:
|
||||
// NOTE: Do not implement any compile-time variables, anything the user needs to configure
|
||||
// should be configurable from the Usermod menu using the methods below
|
||||
// key settings set via usermod menu
|
||||
unsigned long TemperatureDecimals = 0; // Number of decimal places in published temperaure values
|
||||
unsigned long HumidityDecimals = 0; // Number of decimal places in published humidity values
|
||||
unsigned long PressureDecimals = 0; // Number of decimal places in published pressure values
|
||||
unsigned long TemperatureInterval = 5; // Interval to measure temperature (and humidity, dew point if available) in seconds
|
||||
unsigned long PressureInterval = 300; // Interval to measure pressure in seconds
|
||||
uint8_t TemperatureDecimals = 0; // Number of decimal places in published temperaure values
|
||||
uint8_t HumidityDecimals = 0; // Number of decimal places in published humidity values
|
||||
uint8_t PressureDecimals = 0; // Number of decimal places in published pressure values
|
||||
uint16_t TemperatureInterval = 5; // Interval to measure temperature (and humidity, dew point if available) in seconds
|
||||
uint16_t PressureInterval = 300; // Interval to measure pressure in seconds
|
||||
bool PublishAlways = false; // Publish values even when they have not changed
|
||||
bool UseCelsius = true; // Use Celsius for Reporting
|
||||
bool HomeAssistantDiscovery = false; // Publish Home Assistant Device Information
|
||||
bool enabled = true;
|
||||
|
||||
// set the default pins based on the architecture, these get overridden by Usermod menu settings
|
||||
#ifdef ESP8266
|
||||
@@ -70,15 +71,10 @@ private:
|
||||
|
||||
// MQTT topic strings for publishing Home Assistant discovery topics
|
||||
bool mqttInitialized = false;
|
||||
String mqttTemperatureTopic = "";
|
||||
String mqttHumidityTopic = "";
|
||||
String mqttPressureTopic = "";
|
||||
String mqttHeatIndexTopic = "";
|
||||
String mqttDewPointTopic = "";
|
||||
|
||||
// Store packet IDs of MQTT publications
|
||||
uint16_t mqttTemperaturePub = 0;
|
||||
uint16_t mqttPressurePub = 0;
|
||||
// strings to reduce flash memory usage (used more than twice)
|
||||
static const char _name[];
|
||||
static const char _enabled[];
|
||||
|
||||
// Read the BME280/BMP280 Sensor (which one runs depends on whether Celsius or Farenheit being set in Usermod Menu)
|
||||
void UpdateBME280Data(int SensorType)
|
||||
@@ -95,7 +91,7 @@ private:
|
||||
sensorTemperature = _temperature;
|
||||
sensorHumidity = _humidity;
|
||||
sensorPressure = _pressure;
|
||||
tempScale = "°C";
|
||||
tempScale = F("°C");
|
||||
if (sensorType == 1)
|
||||
{
|
||||
sensorHeatIndex = EnvironmentCalculations::HeatIndex(_temperature, _humidity, envTempUnit);
|
||||
@@ -111,7 +107,7 @@ private:
|
||||
sensorTemperature = _temperature;
|
||||
sensorHumidity = _humidity;
|
||||
sensorPressure = _pressure;
|
||||
tempScale = "°F";
|
||||
tempScale = F("°F");
|
||||
if (sensorType == 1)
|
||||
{
|
||||
sensorHeatIndex = EnvironmentCalculations::HeatIndex(_temperature, _humidity, envTempUnit);
|
||||
@@ -123,18 +119,23 @@ private:
|
||||
// Procedure to define all MQTT discovery Topics
|
||||
void _mqttInitialize()
|
||||
{
|
||||
mqttTemperatureTopic = String(mqttDeviceTopic) + F("/temperature");
|
||||
mqttPressureTopic = String(mqttDeviceTopic) + F("/pressure");
|
||||
mqttHumidityTopic = String(mqttDeviceTopic) + F("/humidity");
|
||||
mqttHeatIndexTopic = String(mqttDeviceTopic) + F("/heat_index");
|
||||
mqttDewPointTopic = String(mqttDeviceTopic) + F("/dew_point");
|
||||
char mqttTemperatureTopic[128];
|
||||
char mqttHumidityTopic[128];
|
||||
char mqttPressureTopic[128];
|
||||
char mqttHeatIndexTopic[128];
|
||||
char mqttDewPointTopic[128];
|
||||
snprintf_P(mqttTemperatureTopic, 127, PSTR("%s/temperature"), mqttDeviceTopic);
|
||||
snprintf_P(mqttPressureTopic, 127, PSTR("%s/pressure"), mqttDeviceTopic);
|
||||
snprintf_P(mqttHumidityTopic, 127, PSTR("%s/humidity"), mqttDeviceTopic);
|
||||
snprintf_P(mqttHeatIndexTopic, 127, PSTR("%s/heat_index"), mqttDeviceTopic);
|
||||
snprintf_P(mqttDewPointTopic, 127, PSTR("%s/dew_point"), mqttDeviceTopic);
|
||||
|
||||
if (HomeAssistantDiscovery) {
|
||||
_createMqttSensor(F("Temperature"), mqttTemperatureTopic, F("temperature"), tempScale);
|
||||
_createMqttSensor(F("Pressure"), mqttPressureTopic, F("pressure"), F("hPa"));
|
||||
_createMqttSensor(F("Humidity"), mqttHumidityTopic, F("humidity"), F("%"));
|
||||
_createMqttSensor(F("HeatIndex"), mqttHeatIndexTopic, F("temperature"), tempScale);
|
||||
_createMqttSensor(F("DewPoint"), mqttDewPointTopic, F("temperature"), tempScale);
|
||||
_createMqttSensor(F("Temperature"), mqttTemperatureTopic, "temperature", tempScale);
|
||||
_createMqttSensor(F("Pressure"), mqttPressureTopic, "pressure", F("hPa"));
|
||||
_createMqttSensor(F("Humidity"), mqttHumidityTopic, "humidity", F("%"));
|
||||
_createMqttSensor(F("HeatIndex"), mqttHeatIndexTopic, "temperature", tempScale);
|
||||
_createMqttSensor(F("DewPoint"), mqttDewPointTopic, "temperature", tempScale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,6 +170,15 @@ private:
|
||||
mqtt->publish(t.c_str(), 0, true, temp.c_str());
|
||||
}
|
||||
|
||||
void publishMqtt(const char *topic, const char* state) {
|
||||
//Check if MQTT Connected, otherwise it will crash the 8266
|
||||
if (WLED_MQTT_CONNECTED){
|
||||
char subuf[128];
|
||||
snprintf_P(subuf, 127, PSTR("%s/%s"), mqttDeviceTopic, topic);
|
||||
mqtt->publish(subuf, 0, false, state);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
void setup()
|
||||
{
|
||||
@@ -183,7 +193,7 @@ public:
|
||||
if (!bme.begin())
|
||||
{
|
||||
sensorType = 0;
|
||||
DEBUG_PRINTLN(F("Could not find BME280I2C sensor!"));
|
||||
DEBUG_PRINTLN(F("Could not find BME280 I2C sensor!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -207,14 +217,16 @@ public:
|
||||
|
||||
void loop()
|
||||
{
|
||||
if (!enabled || strip.isUpdating()) return;
|
||||
|
||||
// BME280 sensor MQTT publishing
|
||||
// Check if sensor present and MQTT Connected, otherwise it will crash the MCU
|
||||
if (sensorType != 0 && WLED_MQTT_CONNECTED)
|
||||
// Check if sensor present and Connected, otherwise it will crash the MCU
|
||||
if (sensorType != 0)
|
||||
{
|
||||
// Timer to fetch new temperature, humidity and pressure data at intervals
|
||||
timer = millis();
|
||||
|
||||
if (timer - lastTemperatureMeasure >= TemperatureInterval * 1000 || mqttTemperaturePub == 0)
|
||||
if (timer - lastTemperatureMeasure >= TemperatureInterval * 1000)
|
||||
{
|
||||
lastTemperatureMeasure = timer;
|
||||
|
||||
@@ -223,18 +235,11 @@ public:
|
||||
float temperature = roundf(sensorTemperature * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
float humidity, heatIndex, dewPoint;
|
||||
|
||||
if (WLED_MQTT_CONNECTED && !mqttInitialized)
|
||||
{
|
||||
_mqttInitialize();
|
||||
mqttInitialized = true;
|
||||
}
|
||||
|
||||
// If temperature has changed since last measure, create string populated with device topic
|
||||
// from the UI and values read from sensor, then publish to broker
|
||||
if (temperature != lastTemperature || PublishAlways)
|
||||
{
|
||||
String topic = String(mqttDeviceTopic) + "/temperature";
|
||||
mqttTemperaturePub = mqtt->publish(topic.c_str(), 0, false, String(temperature, TemperatureDecimals).c_str());
|
||||
publishMqtt("temperature", String(temperature, TemperatureDecimals).c_str());
|
||||
}
|
||||
|
||||
lastTemperature = temperature; // Update last sensor temperature for next loop
|
||||
@@ -247,20 +252,17 @@ public:
|
||||
|
||||
if (humidity != lastHumidity || PublishAlways)
|
||||
{
|
||||
String topic = String(mqttDeviceTopic) + F("/humidity");
|
||||
mqtt->publish(topic.c_str(), 0, false, String(humidity, HumidityDecimals).c_str());
|
||||
publishMqtt("humidity", String(humidity, HumidityDecimals).c_str());
|
||||
}
|
||||
|
||||
if (heatIndex != lastHeatIndex || PublishAlways)
|
||||
{
|
||||
String topic = String(mqttDeviceTopic) + F("/heat_index");
|
||||
mqtt->publish(topic.c_str(), 0, false, String(heatIndex, TemperatureDecimals).c_str());
|
||||
publishMqtt("heat_index", String(heatIndex, TemperatureDecimals).c_str());
|
||||
}
|
||||
|
||||
if (dewPoint != lastDewPoint || PublishAlways)
|
||||
{
|
||||
String topic = String(mqttDeviceTopic) + F("/dew_point");
|
||||
mqtt->publish(topic.c_str(), 0, false, String(dewPoint, TemperatureDecimals).c_str());
|
||||
publishMqtt("dew_point", String(dewPoint, TemperatureDecimals).c_str());
|
||||
}
|
||||
|
||||
lastHumidity = humidity;
|
||||
@@ -269,7 +271,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (timer - lastPressureMeasure >= PressureInterval * 1000 || mqttPressurePub == 0)
|
||||
if (timer - lastPressureMeasure >= PressureInterval * 1000)
|
||||
{
|
||||
lastPressureMeasure = timer;
|
||||
|
||||
@@ -277,15 +279,23 @@ public:
|
||||
|
||||
if (pressure != lastPressure || PublishAlways)
|
||||
{
|
||||
String topic = String(mqttDeviceTopic) + F("/pressure");
|
||||
mqttPressurePub = mqtt->publish(topic.c_str(), 0, true, String(pressure, PressureDecimals).c_str());
|
||||
publishMqtt("pressure", String(pressure, PressureDecimals).c_str());
|
||||
}
|
||||
|
||||
lastPressure = pressure;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void onMqttConnect(bool sessionPresent)
|
||||
{
|
||||
if (WLED_MQTT_CONNECTED && !mqttInitialized)
|
||||
{
|
||||
_mqttInitialize();
|
||||
mqttInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* API calls te enable data exchange between WLED modules
|
||||
*/
|
||||
@@ -294,9 +304,9 @@ public:
|
||||
return (float)roundf(sensorTemperature * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
} else {
|
||||
return (float)roundf(sensorTemperature * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) * 1.8f + 32;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
inline float getTemperatureF() {
|
||||
if (UseCelsius) {
|
||||
return ((float)roundf(sensorTemperature * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) -32) * 0.56f;
|
||||
@@ -304,12 +314,15 @@ public:
|
||||
return (float)roundf(sensorTemperature * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
}
|
||||
}
|
||||
|
||||
inline float getHumidity() {
|
||||
return (float)roundf(sensorHumidity * powf(10, HumidityDecimals));
|
||||
}
|
||||
|
||||
inline float getPressure() {
|
||||
return (float)roundf(sensorPressure * powf(10, PressureDecimals));
|
||||
}
|
||||
|
||||
inline float getDewPointC() {
|
||||
if (UseCelsius) {
|
||||
return (float)roundf(sensorDewPoint * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
@@ -317,6 +330,7 @@ public:
|
||||
return (float)roundf(sensorDewPoint * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) * 1.8f + 32;
|
||||
}
|
||||
}
|
||||
|
||||
inline float getDewPointF() {
|
||||
if (UseCelsius) {
|
||||
return ((float)roundf(sensorDewPoint * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) -32) * 0.56f;
|
||||
@@ -324,13 +338,16 @@ public:
|
||||
return (float)roundf(sensorDewPoint * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
}
|
||||
}
|
||||
|
||||
inline float getHeatIndexC() {
|
||||
if (UseCelsius) {
|
||||
return (float)roundf(sensorHeatIndex * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals);
|
||||
} else {
|
||||
return (float)roundf(sensorHeatIndex * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) * 1.8f + 32;
|
||||
}
|
||||
}inline float getHeatIndexF() {
|
||||
}
|
||||
|
||||
inline float getHeatIndexF() {
|
||||
if (UseCelsius) {
|
||||
return ((float)roundf(sensorHeatIndex * powf(10, TemperatureDecimals)) / powf(10, TemperatureDecimals) -32) * 0.56f;
|
||||
} else {
|
||||
@@ -384,7 +401,8 @@ public:
|
||||
// Save Usermod Config Settings
|
||||
void addToConfig(JsonObject& root)
|
||||
{
|
||||
JsonObject top = root.createNestedObject(F("BME280/BMP280"));
|
||||
JsonObject top = root.createNestedObject(FPSTR(_name));
|
||||
top[FPSTR(_enabled)] = enabled;
|
||||
top[F("TemperatureDecimals")] = TemperatureDecimals;
|
||||
top[F("HumidityDecimals")] = HumidityDecimals;
|
||||
top[F("PressureDecimals")] = PressureDecimals;
|
||||
@@ -405,17 +423,17 @@ public:
|
||||
// default settings values could be set here (or below using the 3-argument getJsonValue()) instead of in the class definition or constructor
|
||||
// setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single value being missing after boot (e.g. if the cfg.json was manually edited and a value was removed)
|
||||
|
||||
|
||||
int8_t newPin[2]; for (byte i=0; i<2; i++) newPin[i] = ioPin[i]; // prepare to note changed pins
|
||||
|
||||
JsonObject top = root[F("BME280/BMP280")];
|
||||
JsonObject top = root[FPSTR(_name)];
|
||||
if (top.isNull()) {
|
||||
DEBUG_PRINT(F("BME280/BMP280"));
|
||||
DEBUG_PRINT(F(_name));
|
||||
DEBUG_PRINTLN(F(": No config found. (Using defaults.)"));
|
||||
return false;
|
||||
}
|
||||
bool configComplete = !top.isNull();
|
||||
|
||||
configComplete &= getJsonValue(top[FPSTR(_enabled)], enabled);
|
||||
// A 3-argument getJsonValue() assigns the 3rd argument as a default value if the Json value is missing
|
||||
configComplete &= getJsonValue(top[F("TemperatureDecimals")], TemperatureDecimals, 1);
|
||||
configComplete &= getJsonValue(top[F("HumidityDecimals")], HumidityDecimals, 0);
|
||||
@@ -427,7 +445,7 @@ public:
|
||||
configComplete &= getJsonValue(top[F("HomeAssistantDiscovery")], HomeAssistantDiscovery, false);
|
||||
for (byte i=0; i<2; i++) configComplete &= getJsonValue(top[F("pin")][i], newPin[i], ioPin[i]);
|
||||
|
||||
DEBUG_PRINT(FPSTR(F("BME280/BMP280")));
|
||||
DEBUG_PRINT(FPSTR(_name));
|
||||
if (!initDone) {
|
||||
// first run: reading from cfg.json
|
||||
for (byte i=0; i<2; i++) ioPin[i] = newPin[i];
|
||||
@@ -454,4 +472,7 @@ public:
|
||||
uint16_t getId() {
|
||||
return USERMOD_ID_BME280;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
const char UsermodBME280::_name[] PROGMEM = "BME280/BMP280";
|
||||
const char UsermodBME280::_enabled[] PROGMEM = "enabled";
|
||||
|
||||
@@ -1916,10 +1916,10 @@ class AudioReactive : public Usermod {
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3)
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'I2S Master CLK','<i>only use -1, 0, 1 or 3</i>');"));
|
||||
#else
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'I2S Master CLK','');"));
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'', 'I2S Master CLK');"));
|
||||
#endif
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',4,'I2C SDA',' ');"));
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',5,'I2C SCL',' ');"));
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',4,'', 'I2C SDA');"));
|
||||
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',5,'', 'I2C SCL');"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1036,11 +1036,11 @@ class FourLineDisplayUsermod : public Usermod {
|
||||
oappend(SET_F("addOption(dd,'SSD1305 128x64',5);"));
|
||||
oappend(SET_F("addOption(dd,'SSD1306 SPI',6);"));
|
||||
oappend(SET_F("addOption(dd,'SSD1306 SPI 128x64',7);"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',0,'I2C/SPI CLK','<i>-1 use global</i>');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',1,'I2C/SPI DTA','<i>-1 use global</i>');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',2,'SPI CS',' ');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',3,'SPI DC',' ');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',4,'SPI RST',' ');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',0,'<i>-1 use global</i>','I2C/SPI CLK');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',1,'<i>-1 use global</i>','I2C/SPI DTA');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',2,'','SPI CS');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',3,'','SPI DC');"));
|
||||
oappend(SET_F("addInfo('4LineDisplay:pin[]',4,'','SPI RST');"));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -191,7 +191,7 @@ private:
|
||||
re_sortModes(modes_qstrings, modes_alpha_indexes, strip.getModeCount(), MODE_SORT_SKIP_COUNT);
|
||||
|
||||
palettes_qstrings = re_findModeStrings(JSON_palette_names, strip.getPaletteCount());
|
||||
palettes_alpha_indexes = re_initIndexArray(strip.getPaletteCount());
|
||||
palettes_alpha_indexes = re_initIndexArray(strip.getPaletteCount()); // only use internal palettes
|
||||
|
||||
// How many palette names start with '*' and should not be sorted?
|
||||
// (Also skipping the first one, 'Default').
|
||||
|
||||
@@ -777,7 +777,7 @@ class WS2812FX { // 96 bytes
|
||||
inline uint8_t getSegmentsNum(void) { return _segments.size(); } // returns currently present segments
|
||||
inline uint8_t getCurrSegmentId(void) { return _segment_index; }
|
||||
inline uint8_t getMainSegmentId(void) { return _mainSegment; }
|
||||
inline uint8_t getPaletteCount() { return 13 + GRADIENT_PALETTE_COUNT; }
|
||||
inline uint8_t getPaletteCount() { return 13 + GRADIENT_PALETTE_COUNT; } // will only return built-in palette count
|
||||
inline uint8_t getTargetFps() { return _targetFps; }
|
||||
inline uint8_t getModeCount() { return _modeCount; }
|
||||
|
||||
|
||||
@@ -122,10 +122,11 @@ void IRAM_ATTR_YN WS2812FX::setPixelColorXY(int x, int y, uint32_t col) //WLEDMM
|
||||
#ifndef WLED_DISABLE_2D
|
||||
if (!isMatrix) return; // not a matrix set-up
|
||||
uint16_t index = y * matrixWidth + x;
|
||||
if (index >= customMappingSize) return; // customMappingSize is always W * H of matrix in 2D setup
|
||||
#else
|
||||
uint16_t index = x;
|
||||
#endif
|
||||
if (index >= _length) return;
|
||||
#endif
|
||||
if (index < customMappingSize) index = customMappingTable[index];
|
||||
busses.setPixelColor(index, col);
|
||||
}
|
||||
@@ -134,10 +135,11 @@ void IRAM_ATTR_YN WS2812FX::setPixelColorXY(int x, int y, uint32_t col) //WLEDMM
|
||||
uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) {
|
||||
#ifndef WLED_DISABLE_2D
|
||||
uint16_t index = (y * matrixWidth + x);
|
||||
if (index >= customMappingSize) return 0; // customMappingSize is always W * H of matrix in 2D setup
|
||||
#else
|
||||
uint16_t index = x;
|
||||
#endif
|
||||
if (index >= _length) return 0;
|
||||
#endif
|
||||
if (index < customMappingSize) index = customMappingTable[index];
|
||||
return busses.getPixelColor(index);
|
||||
}
|
||||
|
||||
@@ -425,12 +425,7 @@ void Segment::setMode(uint8_t fx, bool loadDefaults) {
|
||||
sOpt = extractModeDefaults(fx, "mi"); if (sOpt >= 0) mirror = (bool)sOpt; // NOTE: setting this option is a risky business
|
||||
sOpt = extractModeDefaults(fx, "rY"); if (sOpt >= 0) reverse_y = (bool)sOpt;
|
||||
sOpt = extractModeDefaults(fx, "mY"); if (sOpt >= 0) mirror_y = (bool)sOpt; // NOTE: setting this option is a risky business
|
||||
sOpt = extractModeDefaults(fx, "pal");
|
||||
if (sOpt >= 0 && (size_t)sOpt < strip.getPaletteCount() + strip.customPalettes.size()) {
|
||||
if (sOpt != palette) {
|
||||
palette = sOpt;
|
||||
}
|
||||
}
|
||||
sOpt = extractModeDefaults(fx, "pal"); if (sOpt >= 0) setPalette(sOpt);
|
||||
}
|
||||
stateChanged = true; // send UDP/WS broadcast
|
||||
}
|
||||
@@ -438,13 +433,13 @@ void Segment::setMode(uint8_t fx, bool loadDefaults) {
|
||||
}
|
||||
|
||||
void Segment::setPalette(uint8_t pal) {
|
||||
if (pal < strip.getPaletteCount()) {
|
||||
if (pal != palette) {
|
||||
if (strip.paletteFade) startTransition(strip.getTransition());
|
||||
palette = pal;
|
||||
}
|
||||
if (pal < 245 && pal > GRADIENT_PALETTE_COUNT+13) pal = 0; // built in palettes
|
||||
if (pal > 245 && (strip.customPalettes.size() == 0 || 255U-pal > strip.customPalettes.size()-1)) pal = 0; // custom palettes
|
||||
if (pal != palette) {
|
||||
if (strip.paletteFade) startTransition(strip.getTransition());
|
||||
palette = pal;
|
||||
stateChanged = true; // send UDP/WS broadcast
|
||||
}
|
||||
stateChanged = true; // send UDP/WS broadcast
|
||||
}
|
||||
|
||||
// 2D matrix
|
||||
|
||||
@@ -1560,8 +1560,8 @@ function requestJson(command=null)
|
||||
if (json.info) {
|
||||
let i = json.info;
|
||||
// append custom palettes (when loading for the 1st time)
|
||||
if (!command && isEmpty(lastinfo) && i.leds && i.leds.cpal) {
|
||||
for (let j = 0; j<i.leds.cpal; j++) {
|
||||
if (!command && isEmpty(lastinfo) && i.cpalcount) {
|
||||
for (let j = 0; j<i.cpalcount; j++) {
|
||||
let div = d.createElement("div");
|
||||
gId('pallist').appendChild(div);
|
||||
div.outerHTML = generateListItemHtml(
|
||||
|
||||
@@ -190,12 +190,8 @@
|
||||
if (!obj.length) return;
|
||||
if (typeof el === "string" && obj[0]) obj[0].placeholder = el;
|
||||
else if (obj[el]) {
|
||||
if (txt2!="") {
|
||||
obj[el].insertAdjacentHTML('beforebegin', txt + ' ');
|
||||
obj[el].insertAdjacentHTML('afterend', ' '+txt2);
|
||||
}
|
||||
else
|
||||
obj[el].insertAdjacentHTML('afterend', ' '+txt);
|
||||
if (txt!="") obj[el].insertAdjacentHTML('afterend', ' '+txt);
|
||||
if (txt2!="") obj[el].insertAdjacentHTML('beforebegin', txt2 + ' '); //add pre texts
|
||||
}
|
||||
}
|
||||
// load settings and insert values into DOM
|
||||
|
||||
@@ -1661,184 +1661,184 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||
|
||||
|
||||
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
|
||||
const uint16_t PAGE_settings_um_length = 2816;
|
||||
const uint16_t PAGE_settings_um_length = 2811;
|
||||
const uint8_t PAGE_settings_um[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0x6d, 0x73, 0xdb, 0xb8,
|
||||
0x11, 0xfe, 0xae, 0x5f, 0x41, 0x23, 0x1e, 0x9b, 0x1c, 0xd1, 0x94, 0x9c, 0xdc, 0xcd, 0xe4, 0x24,
|
||||
0x81, 0x6e, 0xe2, 0x24, 0x17, 0x35, 0xce, 0xd9, 0x53, 0x5d, 0xee, 0xa6, 0xe3, 0x7a, 0x62, 0x4a,
|
||||
0x84, 0x24, 0xc4, 0x14, 0xc0, 0x92, 0xa0, 0x5f, 0x2a, 0xeb, 0xbf, 0xf7, 0x59, 0x90, 0x94, 0x28,
|
||||
0xc7, 0xce, 0x5c, 0x32, 0xfd, 0xd0, 0x2f, 0x16, 0x09, 0xee, 0x2e, 0x16, 0xbb, 0xcf, 0xbe, 0xc1,
|
||||
0x83, 0x9d, 0x37, 0xa7, 0xc7, 0xbf, 0xff, 0xf3, 0xec, 0xad, 0x33, 0x37, 0x8b, 0x24, 0x1c, 0x54,
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0x6d, 0x73, 0xdb, 0x36,
|
||||
0x12, 0xfe, 0xae, 0x5f, 0x41, 0x23, 0x1e, 0x9b, 0x1c, 0xd1, 0x94, 0x9c, 0xb4, 0x33, 0xa9, 0x24,
|
||||
0xd0, 0x97, 0x38, 0x69, 0xa3, 0x8b, 0x53, 0x7b, 0x4e, 0x4d, 0x3b, 0x37, 0x3e, 0x4f, 0x4c, 0x89,
|
||||
0x90, 0x84, 0x98, 0x02, 0x78, 0x24, 0xe8, 0x97, 0x93, 0xf5, 0xdf, 0xef, 0x59, 0x90, 0x94, 0x28,
|
||||
0xbf, 0x64, 0xda, 0xcc, 0x7d, 0xb8, 0x2f, 0x16, 0x09, 0xee, 0x2e, 0x16, 0xbb, 0xcf, 0xbe, 0xc1,
|
||||
0x83, 0x9d, 0x77, 0xa7, 0xc7, 0xbf, 0xfd, 0xf3, 0xec, 0xbd, 0x33, 0x37, 0x8b, 0x24, 0x1c, 0x54,
|
||||
0x7f, 0x45, 0x14, 0x3b, 0x49, 0xa4, 0x66, 0x9c, 0x09, 0xc5, 0xc2, 0xc1, 0x42, 0x98, 0xc8, 0x99,
|
||||
0xcc, 0xa3, 0x2c, 0x17, 0x86, 0xb3, 0xc2, 0x4c, 0x0f, 0x5e, 0xd6, 0xab, 0x2d, 0x15, 0x2d, 0x04,
|
||||
0xcc, 0xa3, 0x2c, 0x17, 0x86, 0xb3, 0xc2, 0x4c, 0x0f, 0x5e, 0xd7, 0xab, 0x2d, 0x15, 0x2d, 0x04,
|
||||
0x67, 0xd7, 0x52, 0xdc, 0xa4, 0x3a, 0x33, 0xcc, 0x99, 0x68, 0x65, 0x84, 0x02, 0xd9, 0x8d, 0x8c,
|
||||
0xcd, 0x9c, 0xff, 0xdc, 0xed, 0xae, 0x49, 0x1f, 0x7c, 0x8a, 0xc5, 0xb5, 0x9c, 0x88, 0x03, 0xfb,
|
||||
0xcd, 0x9c, 0xff, 0xd8, 0xed, 0xae, 0x49, 0x1f, 0x7c, 0x8a, 0xc5, 0xb5, 0x9c, 0x88, 0x03, 0xfb,
|
||||
0xe2, 0x4b, 0x25, 0x8d, 0x8c, 0x92, 0x83, 0x7c, 0x12, 0x25, 0x82, 0x1f, 0xfa, 0x8b, 0xe8, 0x56,
|
||||
0x2e, 0x8a, 0xc5, 0xfa, 0xbd, 0xc8, 0x45, 0x66, 0x5f, 0xa2, 0x31, 0xde, 0x95, 0x66, 0x5f, 0xed,
|
||||
0x1c, 0x0e, 0x8c, 0x34, 0x89, 0x08, 0x3f, 0x81, 0x72, 0xa1, 0x63, 0x67, 0x24, 0x8c, 0x91, 0x6a,
|
||||
0x96, 0x0f, 0x3a, 0xe5, 0xfa, 0x20, 0x9f, 0x64, 0x32, 0x35, 0x61, 0xeb, 0x3a, 0xca, 0x1c, 0x7d,
|
||||
0xa3, 0x44, 0xe6, 0x27, 0x7a, 0x22, 0x53, 0xbf, 0xc8, 0xf4, 0x4d, 0xee, 0xc7, 0x3c, 0xd6, 0x93,
|
||||
0x62, 0x01, 0xfd, 0xfc, 0x62, 0x71, 0x3c, 0x9d, 0xf1, 0xe5, 0xca, 0x4f, 0xa5, 0xca, 0xf9, 0xf9,
|
||||
0x05, 0xfd, 0x9e, 0xd2, 0x2f, 0xe8, 0xf9, 0xce, 0xa1, 0xaf, 0x8a, 0xc5, 0x47, 0xde, 0xed, 0x4f,
|
||||
0x0b, 0x35, 0x31, 0x52, 0x2b, 0x67, 0x36, 0x8c, 0x5d, 0xe1, 0x2d, 0x33, 0x61, 0x8a, 0x4c, 0x39,
|
||||
0x71, 0x30, 0x13, 0xe6, 0x6d, 0x22, 0x48, 0xd4, 0xeb, 0x3b, 0xfb, 0x69, 0xb5, 0x26, 0x95, 0xf9,
|
||||
0x69, 0x83, 0x54, 0xec, 0xed, 0x31, 0x3d, 0xfe, 0x22, 0x26, 0x86, 0x71, 0x6e, 0xee, 0x52, 0xa1,
|
||||
0xa7, 0xb4, 0xb6, 0xf3, 0x2a, 0xcb, 0xa2, 0xbb, 0x40, 0xe6, 0xf6, 0x77, 0x8b, 0xff, 0xbd, 0xeb,
|
||||
0x2d, 0x6f, 0xa4, 0x8a, 0xf5, 0x4d, 0xa0, 0x53, 0xa1, 0x5c, 0x36, 0x37, 0x26, 0xcd, 0x7b, 0x9d,
|
||||
0xce, 0x4c, 0x9a, 0x79, 0x31, 0x0e, 0x26, 0x7a, 0xd1, 0x79, 0x25, 0xb3, 0x89, 0xd6, 0xfa, 0x4a,
|
||||
0x8a, 0xce, 0x9f, 0x27, 0x6f, 0xdf, 0x74, 0x6e, 0xe4, 0x95, 0xec, 0xd4, 0xd6, 0x78, 0x56, 0x94,
|
||||
0xe6, 0x39, 0xc8, 0xab, 0x05, 0xd6, 0x90, 0xfe, 0xfa, 0xa1, 0xf4, 0xce, 0x9a, 0xca, 0x67, 0x9f,
|
||||
0x73, 0x91, 0x4c, 0x9b, 0xd4, 0x89, 0x8e, 0xe2, 0xbf, 0x8f, 0x5c, 0xe1, 0x1b, 0xbe, 0xd3, 0xf5,
|
||||
0x96, 0x89, 0x30, 0x8e, 0xe2, 0x71, 0x30, 0xc9, 0x44, 0x64, 0x44, 0x65, 0x00, 0x97, 0x95, 0x56,
|
||||
0x67, 0x5e, 0x5f, 0x05, 0x10, 0xf6, 0xca, 0x98, 0x4c, 0x8e, 0x0b, 0x23, 0xf0, 0x21, 0x9b, 0x30,
|
||||
0x5f, 0x78, 0xfe, 0xc3, 0x75, 0xb2, 0x03, 0xb6, 0x33, 0xe2, 0xd6, 0x74, 0xbe, 0x44, 0xd7, 0x51,
|
||||
0x2d, 0xe0, 0x2b, 0xc2, 0x28, 0xbf, 0x53, 0x10, 0x61, 0x3c, 0x3f, 0x0e, 0xc6, 0x3a, 0xbe, 0x0b,
|
||||
0xa2, 0x14, 0x4a, 0xc7, 0xc7, 0x73, 0x99, 0xc4, 0xae, 0x22, 0xfa, 0x28, 0x8e, 0xdf, 0x5e, 0x43,
|
||||
0x8b, 0x13, 0x99, 0x03, 0x78, 0x22, 0x73, 0x19, 0xe9, 0xcc, 0x7c, 0xd7, 0xe3, 0xe1, 0x32, 0x0e,
|
||||
0x8a, 0xc5, 0xe7, 0x94, 0xdc, 0x1a, 0x07, 0x59, 0x7e, 0x1d, 0x57, 0x4f, 0xfa, 0x73, 0xed, 0xf5,
|
||||
0x38, 0x00, 0x08, 0x3f, 0xcf, 0x52, 0xa9, 0xf9, 0x8b, 0x5f, 0xfc, 0x5f, 0x85, 0xf9, 0xc3, 0xf5,
|
||||
0xfa, 0x53, 0x9d, 0xb9, 0x74, 0x52, 0x01, 0x00, 0x88, 0x41, 0xc9, 0x19, 0x24, 0x42, 0xcd, 0xcc,
|
||||
0xbc, 0x2f, 0xda, 0x6d, 0x8f, 0x98, 0x83, 0xb4, 0xc8, 0xe7, 0x6e, 0xf9, 0xed, 0x5c, 0x5c, 0x78,
|
||||
0x16, 0x3f, 0xe5, 0x22, 0xa3, 0x35, 0x18, 0xe3, 0xe0, 0x90, 0xf3, 0x52, 0x81, 0xf3, 0xee, 0xc5,
|
||||
0xde, 0x5e, 0xf9, 0x18, 0xe4, 0x73, 0x39, 0x35, 0x2e, 0x9d, 0x67, 0x34, 0x0d, 0x46, 0x6f, 0x5e,
|
||||
0x91, 0x02, 0x7c, 0xa3, 0x46, 0xb5, 0x7e, 0x7c, 0xf2, 0xe8, 0xfa, 0xc7, 0xd3, 0xd1, 0xf0, 0x29,
|
||||
0x86, 0x0f, 0x8f, 0x73, 0x0c, 0x47, 0xa7, 0x0f, 0x3e, 0xac, 0x1e, 0x37, 0x9b, 0xc8, 0x32, 0x9d,
|
||||
0xc1, 0x5b, 0x30, 0x1b, 0x82, 0x38, 0xd7, 0x89, 0x08, 0x12, 0x3d, 0x73, 0xd9, 0x5b, 0x5a, 0x77,
|
||||
0x2a, 0x2c, 0x00, 0x27, 0xce, 0x54, 0x26, 0xc2, 0x7a, 0x15, 0x51, 0x9b, 0xc1, 0xfb, 0x27, 0xd5,
|
||||
0x3a, 0x80, 0x0d, 0xc6, 0xa9, 0x9c, 0x15, 0x59, 0x64, 0xc1, 0x53, 0x7a, 0xd5, 0x99, 0x46, 0x60,
|
||||
0x88, 0x83, 0x7f, 0xa9, 0xa1, 0x02, 0x74, 0x53, 0x58, 0x56, 0x38, 0x69, 0x34, 0x13, 0x4e, 0x1c,
|
||||
0x99, 0x68, 0x07, 0x68, 0x6b, 0xe0, 0x6d, 0x04, 0x74, 0x32, 0xda, 0xa0, 0x87, 0x68, 0xa9, 0x60,
|
||||
0x8a, 0x88, 0xb4, 0xf2, 0x82, 0x34, 0xd3, 0x46, 0x4f, 0x74, 0xb2, 0xb7, 0xe7, 0xda, 0x28, 0xed,
|
||||
0xfa, 0xae, 0x8d, 0x6e, 0x4e, 0x14, 0xc9, 0xc8, 0xe8, 0x0c, 0x52, 0x29, 0x32, 0x87, 0x46, 0x2c,
|
||||
0x08, 0x07, 0x93, 0x61, 0xca, 0x3c, 0xef, 0xfe, 0xbe, 0x22, 0x03, 0xff, 0x22, 0x85, 0xc2, 0xef,
|
||||
0x20, 0xdf, 0xf9, 0xa8, 0x63, 0x11, 0x38, 0x67, 0x89, 0x88, 0x72, 0xe1, 0xc0, 0x10, 0x22, 0x73,
|
||||
0x28, 0x92, 0x9c, 0xe1, 0x19, 0x54, 0xf2, 0xb7, 0x24, 0xe6, 0xdb, 0x12, 0xcb, 0x94, 0xe2, 0x79,
|
||||
0xa0, 0x8a, 0xa1, 0xaf, 0x4d, 0x15, 0xd8, 0x83, 0x32, 0x04, 0x2b, 0x16, 0xcc, 0x0b, 0xa4, 0x82,
|
||||
0x41, 0xdf, 0xff, 0xfe, 0xf1, 0x84, 0x33, 0xb6, 0x95, 0x17, 0xde, 0x35, 0xf3, 0x02, 0xe7, 0xbc,
|
||||
0x8d, 0x44, 0x20, 0x76, 0x38, 0x77, 0xbb, 0xf7, 0xdb, 0x09, 0x64, 0xf8, 0x18, 0x21, 0xff, 0x8a,
|
||||
0x70, 0x32, 0x17, 0x93, 0x2b, 0x0a, 0x4e, 0x6f, 0x49, 0x09, 0x4f, 0x71, 0x11, 0x50, 0xc2, 0x0c,
|
||||
0x32, 0x91, 0x26, 0xd1, 0x04, 0xe1, 0x73, 0x7e, 0x81, 0x28, 0x83, 0x46, 0x79, 0x31, 0xce, 0x4d,
|
||||
0xe6, 0x1e, 0xbc, 0xf0, 0xfa, 0x72, 0xea, 0x32, 0x68, 0x3c, 0x16, 0x19, 0x2c, 0x2c, 0x02, 0x8a,
|
||||
0x44, 0x64, 0x28, 0xa0, 0x17, 0xaf, 0xaa, 0x26, 0xec, 0xfa, 0x2f, 0x3c, 0x6f, 0x49, 0x71, 0x40,
|
||||
0x72, 0x25, 0xe2, 0x40, 0x0e, 0x2c, 0xea, 0xab, 0x28, 0x90, 0x88, 0x02, 0x08, 0x32, 0x3b, 0x9c,
|
||||
0x60, 0x7f, 0x2e, 0x2f, 0xbc, 0x25, 0x5e, 0x45, 0x70, 0x1d, 0x25, 0x05, 0xf4, 0x24, 0x52, 0x2c,
|
||||
0x42, 0xae, 0x9c, 0x42, 0xec, 0x86, 0x08, 0xb6, 0x34, 0x77, 0x00, 0x16, 0x9c, 0xa8, 0x33, 0xce,
|
||||
0x12, 0xb9, 0x10, 0xac, 0x3f, 0x46, 0x32, 0xb9, 0x5a, 0x3d, 0xc2, 0x7f, 0x7f, 0x5f, 0xad, 0x0c,
|
||||
0x0e, 0x0e, 0xd7, 0xcf, 0xe1, 0x06, 0xc8, 0x5f, 0xc9, 0xcb, 0x44, 0x5c, 0x8b, 0xdb, 0xfe, 0x62,
|
||||
0x63, 0x9e, 0x58, 0x82, 0x5c, 0x2f, 0x84, 0x6b, 0x78, 0x68, 0xb0, 0x0b, 0xd5, 0xba, 0x21, 0xf2,
|
||||
0x57, 0x25, 0xd9, 0x3f, 0xec, 0x7a, 0xde, 0x11, 0x83, 0xcf, 0xd5, 0x4c, 0xb0, 0x1e, 0x7b, 0x36,
|
||||
0x9d, 0x4e, 0xd9, 0x6a, 0x25, 0x92, 0x5c, 0x2c, 0xf3, 0x1b, 0x69, 0x26, 0x73, 0xb7, 0xb4, 0xaf,
|
||||
0xb7, 0x9c, 0x00, 0x34, 0x0c, 0xc1, 0xcb, 0x7a, 0xe5, 0xd3, 0xf1, 0x49, 0xf5, 0x44, 0x01, 0xba,
|
||||
0x59, 0xfc, 0x50, 0xaf, 0x22, 0x08, 0x59, 0xcf, 0x2a, 0xd6, 0x8f, 0xc5, 0x34, 0x2a, 0x12, 0xd3,
|
||||
0x2b, 0xbd, 0xbb, 0x22, 0x1b, 0x3f, 0x6e, 0xdf, 0x1f, 0xb2, 0xa8, 0xd1, 0x8b, 0xc8, 0xe8, 0xff,
|
||||
0x7b, 0x9b, 0x6e, 0x20, 0x8c, 0x68, 0x3d, 0x83, 0x66, 0x84, 0x77, 0x68, 0x5b, 0x96, 0x4e, 0x8f,
|
||||
0x8c, 0x42, 0x39, 0xc8, 0x9c, 0x2b, 0x5f, 0x5e, 0x20, 0xaf, 0x9c, 0xda, 0x02, 0x1a, 0x20, 0x4c,
|
||||
0x33, 0x29, 0x88, 0xd8, 0xab, 0x88, 0xa5, 0xe7, 0xd9, 0x32, 0xcf, 0x95, 0x5f, 0x4b, 0x92, 0x5e,
|
||||
0x9f, 0x5c, 0xe6, 0x10, 0xd0, 0x6b, 0x58, 0x7f, 0x23, 0x20, 0x48, 0xd2, 0x76, 0x2d, 0x96, 0xa5,
|
||||
0x02, 0x84, 0x7c, 0x03, 0xcf, 0x98, 0x81, 0xac, 0xdd, 0x62, 0x08, 0xf6, 0xe7, 0xe6, 0x22, 0xe4,
|
||||
0x5d, 0xe4, 0xa0, 0x4d, 0x19, 0xa0, 0xb5, 0x66, 0x05, 0xb0, 0x2a, 0x79, 0xb5, 0x1e, 0x5f, 0x51,
|
||||
0x3f, 0x4d, 0xfa, 0x84, 0x2a, 0x8f, 0xa8, 0xb1, 0x3e, 0x2d, 0x6d, 0xdd, 0x48, 0x1d, 0x68, 0xb1,
|
||||
0x8e, 0xa3, 0x74, 0x93, 0x3e, 0x18, 0x8e, 0x89, 0xe4, 0xcc, 0x76, 0xd6, 0xbd, 0xc7, 0x11, 0x63,
|
||||
0x3d, 0xf8, 0x10, 0x9d, 0xde, 0x2b, 0xe3, 0x76, 0xbd, 0xc0, 0xe8, 0x4f, 0xa8, 0xa9, 0xd9, 0x31,
|
||||
0x80, 0xea, 0x7a, 0x6d, 0xf8, 0x38, 0x41, 0xc7, 0xe6, 0x1e, 0x36, 0x84, 0xa2, 0x56, 0xbc, 0x93,
|
||||
0x02, 0x05, 0x17, 0x99, 0xc6, 0x87, 0x47, 0xd0, 0x1f, 0xad, 0xbd, 0xa5, 0x90, 0x27, 0x6c, 0x73,
|
||||
0xd5, 0xe6, 0xfb, 0x83, 0x79, 0xe6, 0x4c, 0x92, 0x28, 0xcf, 0x39, 0xcb, 0x17, 0x09, 0x0b, 0xf7,
|
||||
0x7d, 0x56, 0xa8, 0x2b, 0x85, 0x23, 0x12, 0x64, 0x0d, 0xc1, 0x4d, 0xaa, 0x49, 0x52, 0xc4, 0x70,
|
||||
0x21, 0xb0, 0x40, 0x89, 0xb9, 0x62, 0xbd, 0x1c, 0xa4, 0xe1, 0xa0, 0x08, 0x77, 0x97, 0xb5, 0xfe,
|
||||
0xc6, 0x5b, 0x0d, 0x3a, 0x45, 0x38, 0xe8, 0xa4, 0xe1, 0x65, 0x59, 0x90, 0x4b, 0x3c, 0x48, 0x5f,
|
||||
0x3f, 0x82, 0x07, 0x28, 0xf1, 0xed, 0x9d, 0x8e, 0x1a, 0x47, 0x80, 0x08, 0xaf, 0xb7, 0x79, 0x6f,
|
||||
0xe3, 0x7b, 0xdb, 0xd8, 0xd5, 0xd5, 0xe3, 0x4e, 0x50, 0x1b, 0x3c, 0x68, 0x38, 0x42, 0x0f, 0x54,
|
||||
0xed, 0x08, 0x0d, 0x47, 0x6c, 0x1b, 0xe7, 0x5c, 0x5f, 0xf8, 0x68, 0x94, 0xac, 0x3b, 0x6d, 0x4e,
|
||||
0xce, 0xfd, 0xac, 0xb6, 0xbc, 0xea, 0x57, 0x59, 0x24, 0xab, 0x12, 0xc8, 0x58, 0xa3, 0xc8, 0x46,
|
||||
0x8a, 0xf5, 0x10, 0x66, 0x36, 0x95, 0x8f, 0xf5, 0x2d, 0xf3, 0x73, 0xbe, 0x5f, 0x86, 0x2c, 0x33,
|
||||
0x59, 0x21, 0xd8, 0x7e, 0xdb, 0x55, 0x47, 0xac, 0x4c, 0xf5, 0x08, 0xc5, 0x1e, 0xd0, 0x5b, 0x86,
|
||||
0x63, 0xdf, 0xca, 0xa8, 0x52, 0x79, 0x2f, 0xe7, 0x97, 0x15, 0xd7, 0xee, 0x52, 0xad, 0xd8, 0xa5,
|
||||
0x5f, 0x61, 0x9f, 0x9b, 0x06, 0xd6, 0x8f, 0x5c, 0xb2, 0xb5, 0x43, 0xed, 0x00, 0xc8, 0x1a, 0x1d,
|
||||
0x01, 0x73, 0x16, 0x52, 0x71, 0x76, 0x70, 0xc8, 0xd6, 0x0e, 0x84, 0x08, 0xa8, 0x25, 0x15, 0xba,
|
||||
0xb2, 0x1e, 0x39, 0xd7, 0x41, 0x9f, 0x90, 0x72, 0x16, 0xa9, 0xbb, 0x35, 0xcd, 0xed, 0x6d, 0xc2,
|
||||
0xf6, 0xfb, 0x0f, 0xd2, 0x1a, 0xb7, 0x5d, 0x1d, 0x1d, 0x63, 0x4b, 0x21, 0xc7, 0xa6, 0x8e, 0x6a,
|
||||
0x2c, 0xe8, 0x3d, 0xff, 0xb9, 0x9b, 0xde, 0xf6, 0xd9, 0xe5, 0xaa, 0xf6, 0xbf, 0xb3, 0xe5, 0x7a,
|
||||
0x07, 0xea, 0xaf, 0x0d, 0xc2, 0x79, 0x76, 0xb4, 0x86, 0x89, 0x54, 0x69, 0x61, 0x1c, 0x32, 0x28,
|
||||
0x67, 0x73, 0x19, 0xc7, 0x18, 0x5d, 0x9c, 0x72, 0x46, 0xd8, 0x5d, 0x8a, 0x55, 0x6f, 0x77, 0x69,
|
||||
0x56, 0x90, 0x74, 0x44, 0x71, 0x0e, 0x4b, 0x61, 0xdb, 0x4a, 0x87, 0x69, 0x04, 0x87, 0xb0, 0xf0,
|
||||
0xb2, 0x27, 0x9b, 0xa0, 0xfb, 0x51, 0x69, 0xbb, 0xcb, 0x6c, 0x05, 0x61, 0x9e, 0xff, 0xa8, 0xa4,
|
||||
0xdd, 0xa5, 0x35, 0x1b, 0x27, 0xc5, 0xd7, 0xfe, 0x01, 0xc3, 0xb7, 0x45, 0xef, 0x2e, 0xf3, 0x15,
|
||||
0xba, 0x2c, 0x2b, 0xa8, 0x82, 0x83, 0x6b, 0xe6, 0x32, 0xf7, 0xf7, 0x77, 0x29, 0x25, 0x97, 0x3e,
|
||||
0x24, 0x58, 0xc7, 0xe2, 0xf6, 0x74, 0x6a, 0x51, 0xdd, 0x46, 0x90, 0xee, 0x7b, 0x18, 0x8a, 0xc6,
|
||||
0x59, 0x78, 0xb9, 0xda, 0x8a, 0xd7, 0x37, 0x99, 0x4e, 0xd1, 0x3b, 0xa9, 0xb2, 0x39, 0x78, 0xaa,
|
||||
0x6d, 0x17, 0x09, 0x8d, 0x25, 0x1e, 0x22, 0xba, 0x39, 0xd0, 0xe4, 0xaf, 0xef, 0x7e, 0x83, 0xa6,
|
||||
0x75, 0x68, 0x78, 0xe7, 0x87, 0x17, 0xd4, 0x35, 0x48, 0x14, 0x9f, 0xe1, 0x6f, 0x67, 0x9f, 0x7e,
|
||||
0xa7, 0x93, 0xc9, 0xc0, 0x44, 0x33, 0xa2, 0x42, 0x66, 0x2b, 0x1d, 0x5e, 0x2e, 0xc2, 0x00, 0xf7,
|
||||
0xf7, 0x9b, 0xfe, 0xa2, 0x5a, 0xf2, 0x4a, 0x15, 0x04, 0x5e, 0xad, 0x05, 0xfb, 0xd2, 0xd6, 0xd1,
|
||||
0xfe, 0x76, 0x58, 0xc9, 0x20, 0xaa, 0x1b, 0xff, 0x75, 0x21, 0x6c, 0xb7, 0x75, 0xd9, 0xdb, 0xe4,
|
||||
0xbc, 0xf9, 0x19, 0x61, 0xd6, 0x2f, 0x87, 0x88, 0x1d, 0x9e, 0x5b, 0x59, 0x50, 0xce, 0x8a, 0x6e,
|
||||
0x2e, 0x58, 0x98, 0x36, 0x17, 0x2c, 0x06, 0x1b, 0x0b, 0x0f, 0xa6, 0x8d, 0x72, 0xd9, 0xcf, 0x4b,
|
||||
0x25, 0xbd, 0x55, 0xd5, 0x80, 0x3d, 0x9c, 0x49, 0xa8, 0x6d, 0x3d, 0x00, 0x89, 0xed, 0x81, 0x65,
|
||||
0x80, 0x92, 0x07, 0xa3, 0x55, 0xb6, 0xab, 0x2b, 0x4d, 0x35, 0xa0, 0xf8, 0xc8, 0xf5, 0x6a, 0x2d,
|
||||
0xa7, 0x48, 0x92, 0x2d, 0x27, 0x9d, 0xa6, 0xf4, 0x54, 0x26, 0x0e, 0x9b, 0x50, 0x89, 0x02, 0x46,
|
||||
0x13, 0x5e, 0xc9, 0xd1, 0x27, 0xa3, 0xc9, 0xaf, 0xfd, 0xa6, 0x2d, 0x1f, 0xf2, 0x40, 0x65, 0x4e,
|
||||
0x14, 0x3f, 0xd8, 0x19, 0x4e, 0xe0, 0xc6, 0x17, 0x5b, 0x13, 0x92, 0xdc, 0x0c, 0x33, 0x65, 0x0d,
|
||||
0xa1, 0xc4, 0x8f, 0x0f, 0xbf, 0xa1, 0xf9, 0xcd, 0x9b, 0xe5, 0x64, 0xd9, 0xfc, 0x80, 0x92, 0x52,
|
||||
0x77, 0x0d, 0x22, 0xa0, 0xd3, 0xe2, 0xfc, 0xb4, 0x00, 0x5f, 0x53, 0x33, 0x4c, 0xa0, 0x11, 0xf1,
|
||||
0x90, 0x80, 0xc8, 0x11, 0xac, 0x5b, 0x47, 0x1a, 0xaa, 0xa9, 0x5e, 0x97, 0x09, 0xa4, 0x2a, 0xeb,
|
||||
0x77, 0xfd, 0x38, 0xbc, 0xbc, 0xbe, 0xae, 0x54, 0x20, 0x10, 0x55, 0x75, 0x6a, 0x3d, 0x23, 0x9b,
|
||||
0xbd, 0x3d, 0x8d, 0xb9, 0xe9, 0x88, 0xfe, 0x04, 0xd6, 0xa6, 0x73, 0x9d, 0xc4, 0xa8, 0xf4, 0xa6,
|
||||
0xa7, 0xa1, 0x20, 0xb1, 0xc0, 0x93, 0xf2, 0xc8, 0xa5, 0x37, 0x84, 0x05, 0x46, 0x5e, 0xf3, 0x2a,
|
||||
0xfe, 0x02, 0x3a, 0x65, 0xa8, 0xf7, 0x76, 0xd9, 0x58, 0xe0, 0xec, 0x62, 0x2c, 0x66, 0x48, 0x84,
|
||||
0xbe, 0x6a, 0xb3, 0x3d, 0x35, 0xce, 0xd3, 0x3e, 0xe0, 0xfe, 0x24, 0x47, 0x34, 0xc5, 0x18, 0x00,
|
||||
0xe3, 0xa1, 0x47, 0xa8, 0x88, 0xdb, 0xa8, 0xc0, 0xbd, 0xef, 0xa1, 0x47, 0xb1, 0x68, 0x8e, 0xcf,
|
||||
0x34, 0x20, 0x2c, 0xa7, 0x82, 0xb2, 0x3e, 0x0d, 0x21, 0x47, 0x76, 0x96, 0xc7, 0x28, 0xcf, 0xda,
|
||||
0x76, 0x88, 0xa0, 0x6c, 0xde, 0x66, 0x9d, 0xc9, 0x74, 0x16, 0x7c, 0xc9, 0xe1, 0x52, 0x7f, 0xb9,
|
||||
0x10, 0x66, 0xae, 0xe3, 0x1e, 0x83, 0xbd, 0xd8, 0x0a, 0xc5, 0x79, 0x8e, 0x11, 0x1d, 0x23, 0x19,
|
||||
0x0c, 0xaf, 0xaf, 0xea, 0x21, 0x03, 0xa9, 0x2c, 0xcb, 0xa8, 0x89, 0xb1, 0xdd, 0x58, 0x2c, 0x73,
|
||||
0x98, 0xe7, 0x8e, 0x72, 0x75, 0x22, 0x95, 0xc0, 0xf9, 0x84, 0x15, 0xe6, 0x42, 0x93, 0x35, 0x3f,
|
||||
0xa1, 0xab, 0xbc, 0xf2, 0x10, 0x18, 0x43, 0xfd, 0x4d, 0xd7, 0x55, 0xa6, 0x30, 0xb8, 0xca, 0xa7,
|
||||
0x6a, 0x6e, 0x49, 0x10, 0xad, 0xb6, 0xd8, 0x22, 0x5e, 0x1f, 0x4e, 0x60, 0xb9, 0x88, 0xb2, 0xc9,
|
||||
0xdc, 0x37, 0x5c, 0x89, 0x1b, 0xe7, 0xd3, 0x3f, 0x4e, 0x46, 0xf6, 0xfd, 0x2c, 0xca, 0xa2, 0x05,
|
||||
0x09, 0x23, 0x2f, 0x97, 0x33, 0x50, 0xa3, 0x64, 0x0b, 0x5f, 0x3d, 0x52, 0xb2, 0xab, 0x9d, 0x9a,
|
||||
0x93, 0x26, 0x86, 0x7c, 0x74, 0x90, 0x94, 0x51, 0xd6, 0x69, 0x75, 0x9e, 0x85, 0x83, 0xf9, 0x8b,
|
||||
0x90, 0x52, 0xe6, 0xa0, 0x83, 0x87, 0x4b, 0xbf, 0x51, 0x6e, 0xd7, 0x25, 0x1f, 0xd1, 0xe3, 0xf5,
|
||||
0x29, 0x76, 0xd0, 0xe4, 0x20, 0xca, 0x29, 0xef, 0x58, 0x09, 0xb5, 0x24, 0xce, 0xaa, 0xfb, 0xa2,
|
||||
0xfc, 0xc1, 0x80, 0xaa, 0x34, 0xa6, 0x53, 0x5d, 0xa8, 0x38, 0xa0, 0x14, 0x7a, 0x96, 0x89, 0x3c,
|
||||
0x77, 0x06, 0x32, 0x1c, 0x45, 0xd7, 0x62, 0xd0, 0x91, 0xa1, 0x63, 0xb4, 0x53, 0xdd, 0x59, 0xc9,
|
||||
0xff, 0x60, 0x5c, 0x2d, 0x4b, 0x5c, 0x1e, 0x60, 0xa8, 0xb3, 0x7e, 0x98, 0x25, 0x7a, 0x1c, 0x25,
|
||||
0xbf, 0x9e, 0x0d, 0x4f, 0xf3, 0xaf, 0xbd, 0xb1, 0xd6, 0xe2, 0x88, 0x8d, 0x61, 0xbf, 0x2b, 0xe4,
|
||||
0x52, 0xa5, 0xe1, 0x1e, 0xff, 0xb1, 0x39, 0xb1, 0xbc, 0x9e, 0xaa, 0x2e, 0x5b, 0xbe, 0x01, 0x94,
|
||||
0xfa, 0xaa, 0xa6, 0x93, 0xc3, 0xc5, 0x47, 0x29, 0x7f, 0xc9, 0x7c, 0xf4, 0x62, 0xc0, 0x09, 0xfc,
|
||||
0x43, 0xe3, 0x09, 0x1c, 0xfd, 0x17, 0x10, 0xe2, 0x37, 0xad, 0x2e, 0xb6, 0xe6, 0xef, 0xfc, 0x7a,
|
||||
0x44, 0xbd, 0xa3, 0xc0, 0xac, 0x2d, 0xe8, 0x7a, 0xe0, 0x4d, 0x79, 0xe6, 0xfa, 0xbe, 0xc2, 0x96,
|
||||
0xa5, 0x3f, 0x60, 0x8e, 0x58, 0x9a, 0x3b, 0xd7, 0xa3, 0x4b, 0x0d, 0xac, 0xa2, 0x38, 0x2d, 0x24,
|
||||
0x68, 0x56, 0xad, 0x41, 0xa7, 0xba, 0x80, 0x1b, 0xd8, 0x9d, 0xc3, 0xbf, 0xc9, 0x05, 0xdd, 0xdb,
|
||||
0x39, 0x45, 0x96, 0xb8, 0xac, 0x1a, 0x1e, 0x90, 0x92, 0xbd, 0x3e, 0x08, 0x2d, 0x01, 0xbc, 0x2a,
|
||||
0xa2, 0x18, 0x15, 0x4c, 0xc7, 0x77, 0xa8, 0x7e, 0x64, 0x01, 0xce, 0x10, 0x33, 0x28, 0x6a, 0x40,
|
||||
0xd0, 0xa2, 0xe5, 0x48, 0xbc, 0xd3, 0xd3, 0xe7, 0xbc, 0xae, 0x9f, 0xa3, 0x29, 0xba, 0x15, 0x1b,
|
||||
0x25, 0x9c, 0xa5, 0x3a, 0x37, 0x0c, 0x7c, 0xa5, 0x06, 0xe8, 0x5a, 0x48, 0x7d, 0xd2, 0x9b, 0x04,
|
||||
0xc4, 0xf2, 0xba, 0xee, 0x54, 0x8c, 0xc6, 0xec, 0x7f, 0xc3, 0xc2, 0x56, 0x73, 0x71, 0x2e, 0x92,
|
||||
0xf4, 0x35, 0x55, 0xcf, 0xc2, 0x18, 0x1c, 0xbd, 0x2c, 0xde, 0xe5, 0x0b, 0xc9, 0x9c, 0xa0, 0x0f,
|
||||
0xbe, 0xe2, 0xec, 0x3d, 0x29, 0x73, 0x34, 0xe8, 0x94, 0x1f, 0xa0, 0x30, 0x24, 0xac, 0x79, 0x5a,
|
||||
0x4f, 0x30, 0xbd, 0x26, 0xa6, 0xd7, 0xd1, 0xe4, 0x6a, 0xc3, 0xb7, 0xb5, 0x4b, 0xa9, 0x2f, 0xab,
|
||||
0x90, 0xb6, 0x26, 0xc9, 0xa0, 0x60, 0x9e, 0x46, 0xca, 0x9e, 0x3a, 0xc9, 0xf3, 0x62, 0xb2, 0xee,
|
||||
0x9b, 0xec, 0xcc, 0xd5, 0x9b, 0x65, 0x42, 0xa8, 0x7e, 0xe5, 0xcf, 0x9e, 0xc5, 0x53, 0xb8, 0xf7,
|
||||
0xec, 0xb0, 0xdb, 0xed, 0xfe, 0xd4, 0x77, 0x8e, 0xb7, 0x2f, 0x5f, 0x20, 0x3a, 0xde, 0x21, 0x8f,
|
||||
0x40, 0x60, 0xe8, 0x34, 0xe5, 0x12, 0x36, 0xb6, 0xe5, 0x62, 0xc8, 0x7b, 0x20, 0xb5, 0xb5, 0xf7,
|
||||
0xec, 0x97, 0x97, 0x2f, 0x5f, 0x92, 0xd4, 0x22, 0x89, 0x6d, 0xa4, 0x90, 0x73, 0xb6, 0x03, 0x28,
|
||||
0xa8, 0xa4, 0x57, 0x46, 0x21, 0xdb, 0xd2, 0x0e, 0xcd, 0xb8, 0x70, 0x5a, 0xd5, 0x46, 0xdb, 0xe2,
|
||||
0xcb, 0xc8, 0x7e, 0xde, 0xbc, 0xc8, 0x2d, 0x52, 0x80, 0xe1, 0x79, 0xf8, 0xab, 0x65, 0x76, 0x86,
|
||||
0x83, 0xbc, 0x48, 0xc3, 0xe7, 0xd8, 0x00, 0x3f, 0xc7, 0x8e, 0x15, 0xe6, 0xb8, 0xef, 0xff, 0xf4,
|
||||
0x5a, 0x64, 0xa6, 0x81, 0xdc, 0xd6, 0xbf, 0x9a, 0x2f, 0x43, 0x17, 0x10, 0xba, 0xa3, 0x5b, 0x6c,
|
||||
0x35, 0xa3, 0x3b, 0x64, 0xba, 0xb5, 0x7a, 0x3b, 0x3a, 0x7b, 0xf1, 0xdc, 0x2f, 0xd7, 0x84, 0x93,
|
||||
0x89, 0x7f, 0x17, 0x12, 0x71, 0x8e, 0x07, 0x74, 0xdf, 0x66, 0x07, 0xe2, 0x10, 0xe8, 0x24, 0x12,
|
||||
0xd3, 0x7c, 0x6f, 0xab, 0x8d, 0xab, 0x9a, 0x98, 0x4d, 0x67, 0x6c, 0xdb, 0xe6, 0x9f, 0x5e, 0xae,
|
||||
0x71, 0x88, 0xf1, 0xdf, 0x69, 0xc1, 0xe5, 0x56, 0x32, 0xdf, 0x6f, 0xb4, 0x6c, 0x34, 0xa4, 0x7b,
|
||||
0xfb, 0x9b, 0x56, 0xda, 0x69, 0xd6, 0x2f, 0xcb, 0x18, 0x3a, 0xa3, 0xe3, 0x93, 0x7a, 0xbf, 0xd6,
|
||||
0x5f, 0xdc, 0xf0, 0xf8, 0xc4, 0x42, 0xec, 0xc9, 0xfd, 0x5a, 0x4f, 0x6d, 0x08, 0xc6, 0xf0, 0xe1,
|
||||
0x70, 0x56, 0xd9, 0x79, 0x74, 0x36, 0x6c, 0x18, 0xb7, 0xb2, 0x6d, 0xeb, 0x7f, 0x64, 0xdc, 0xda,
|
||||
0xb6, 0x2d, 0xba, 0x16, 0xf9, 0x3e, 0xeb, 0xda, 0x8b, 0x94, 0x1f, 0x32, 0xaf, 0xe5, 0x0c, 0x1d,
|
||||
0xba, 0x73, 0xf9, 0x4e, 0x03, 0xdb, 0x6b, 0x9a, 0x1f, 0xb2, 0xb0, 0xe5, 0xb4, 0x3e, 0xfd, 0xf0,
|
||||
0x57, 0x8f, 0xd9, 0x5a, 0x3b, 0xf5, 0xc3, 0xb7, 0xf7, 0x7c, 0xda, 0xa9, 0x1f, 0x58, 0x33, 0xf2,
|
||||
0x5a, 0x14, 0x7a, 0xa8, 0x2b, 0x61, 0x7d, 0x1f, 0x5b, 0x17, 0x8b, 0x20, 0x08, 0x2a, 0x32, 0x0a,
|
||||
0xba, 0x6f, 0x67, 0xbb, 0x75, 0xe2, 0x6a, 0x7d, 0x57, 0xe6, 0xea, 0x50, 0x8a, 0xc6, 0x0f, 0xa5,
|
||||
0x71, 0xca, 0xe9, 0xf4, 0x1f, 0xa6, 0xff, 0x02, 0x3f, 0x9e, 0x8f, 0x5c, 0x77, 0x1a, 0x00, 0x00
|
||||
0x2e, 0x8a, 0xc5, 0xfa, 0xbd, 0xc8, 0x45, 0x66, 0x5f, 0xa2, 0x31, 0xde, 0x95, 0x66, 0x8f, 0x76,
|
||||
0x0e, 0x07, 0x46, 0x9a, 0x44, 0x84, 0x9f, 0x41, 0xb9, 0xd0, 0xb1, 0x33, 0x12, 0xc6, 0x48, 0x35,
|
||||
0xcb, 0x07, 0x9d, 0x72, 0x7d, 0x90, 0x4f, 0x32, 0x99, 0x9a, 0xb0, 0x75, 0x1d, 0x65, 0x8e, 0xbe,
|
||||
0x51, 0x22, 0xf3, 0x13, 0x3d, 0x91, 0xa9, 0x5f, 0x64, 0xfa, 0x26, 0xf7, 0x63, 0x1e, 0xeb, 0x49,
|
||||
0xb1, 0x80, 0x7e, 0x7e, 0xb1, 0x38, 0x9e, 0xce, 0xf8, 0x72, 0xe5, 0xa7, 0x52, 0xe5, 0xfc, 0xfc,
|
||||
0x82, 0x7e, 0x4f, 0xe9, 0x17, 0xf4, 0x7c, 0xe7, 0xd0, 0x57, 0xc5, 0xe2, 0x13, 0xef, 0xf6, 0xa7,
|
||||
0x85, 0x9a, 0x18, 0xa9, 0x95, 0x33, 0x1b, 0xc6, 0xae, 0xf0, 0x96, 0x99, 0x30, 0x45, 0xa6, 0x9c,
|
||||
0x38, 0x98, 0x09, 0xf3, 0x3e, 0x11, 0x24, 0xea, 0xed, 0x9d, 0xfd, 0xb4, 0x5a, 0x93, 0xca, 0xfc,
|
||||
0xb4, 0x41, 0x2a, 0xf6, 0xf6, 0x98, 0x1e, 0x7f, 0x15, 0x13, 0xc3, 0x38, 0x37, 0x77, 0xa9, 0xd0,
|
||||
0x53, 0x5a, 0xdb, 0x79, 0x93, 0x65, 0xd1, 0x5d, 0x20, 0x73, 0xfb, 0xbb, 0xc5, 0xff, 0xc1, 0xf5,
|
||||
0x96, 0x37, 0x52, 0xc5, 0xfa, 0x26, 0xd0, 0xa9, 0x50, 0x2e, 0x9b, 0x1b, 0x93, 0xe6, 0xbd, 0x4e,
|
||||
0x67, 0x26, 0xcd, 0xbc, 0x18, 0x07, 0x13, 0xbd, 0xe8, 0xbc, 0x91, 0xd9, 0x44, 0x6b, 0x7d, 0x25,
|
||||
0x45, 0xe7, 0x8f, 0x93, 0xf7, 0xef, 0x3a, 0x37, 0xf2, 0x4a, 0x76, 0x6a, 0x6b, 0xbc, 0x28, 0x4a,
|
||||
0xf3, 0x1c, 0xe4, 0xd5, 0x02, 0x6b, 0x48, 0x7f, 0xfb, 0x50, 0x7a, 0x67, 0x4d, 0xe5, 0xb3, 0x2f,
|
||||
0xb9, 0x48, 0xa6, 0x4d, 0xea, 0x44, 0x47, 0xf1, 0xdf, 0x47, 0xae, 0xf0, 0x0d, 0xdf, 0xe9, 0x7a,
|
||||
0xcb, 0x44, 0x18, 0x47, 0xf1, 0x38, 0x98, 0x64, 0x22, 0x32, 0xa2, 0x32, 0x80, 0xcb, 0x4a, 0xab,
|
||||
0x33, 0xaf, 0xaf, 0x02, 0x08, 0x7b, 0x63, 0x4c, 0x26, 0xc7, 0x85, 0x11, 0xf8, 0x90, 0x4d, 0x98,
|
||||
0x2f, 0x3c, 0xff, 0xe1, 0x3a, 0xd9, 0x01, 0xdb, 0x19, 0x71, 0x6b, 0x3a, 0x5f, 0xa3, 0xeb, 0xa8,
|
||||
0x16, 0xf0, 0x88, 0x30, 0xca, 0xef, 0x14, 0x44, 0x18, 0xcf, 0x8f, 0x83, 0xb1, 0x8e, 0xef, 0x82,
|
||||
0x28, 0x85, 0xd2, 0xf1, 0xf1, 0x5c, 0x26, 0xb1, 0xab, 0x88, 0x3e, 0x8a, 0xe3, 0xf7, 0xd7, 0xd0,
|
||||
0xe2, 0x44, 0xe6, 0x00, 0x9e, 0xc8, 0x5c, 0x46, 0x3a, 0x33, 0xdf, 0xf5, 0x78, 0xb8, 0x8c, 0x83,
|
||||
0x62, 0xf1, 0x25, 0x25, 0xb7, 0xc6, 0x41, 0x96, 0x5f, 0xc7, 0xd5, 0x93, 0xfe, 0x52, 0x7b, 0x3d,
|
||||
0x0e, 0x00, 0xc2, 0x2f, 0xb3, 0x54, 0x6a, 0xfe, 0xea, 0x27, 0xff, 0x17, 0x61, 0x7e, 0x77, 0xbd,
|
||||
0xfe, 0x54, 0x67, 0x2e, 0x9d, 0x54, 0x00, 0x00, 0x62, 0x50, 0x72, 0x06, 0x89, 0x50, 0x33, 0x33,
|
||||
0xef, 0x8b, 0x76, 0xdb, 0x23, 0xe6, 0x20, 0x2d, 0xf2, 0xb9, 0x5b, 0x7e, 0x3b, 0x17, 0x17, 0x9e,
|
||||
0xc5, 0x4f, 0xb9, 0xc8, 0x68, 0x0d, 0xc6, 0x38, 0x38, 0xe4, 0xbc, 0x54, 0xe0, 0xbc, 0x7b, 0xb1,
|
||||
0xb7, 0x57, 0x3e, 0x06, 0xf9, 0x5c, 0x4e, 0x8d, 0x4b, 0xe7, 0x19, 0x4d, 0x83, 0xd1, 0xbb, 0x37,
|
||||
0xa4, 0x00, 0xdf, 0xa8, 0x51, 0xad, 0x1f, 0x9f, 0x3c, 0xb9, 0xfe, 0xe9, 0x74, 0x34, 0x7c, 0x8e,
|
||||
0xe1, 0xe3, 0xd3, 0x1c, 0xc3, 0xd1, 0xe9, 0x83, 0x0f, 0xab, 0xa7, 0xcd, 0x26, 0xb2, 0x4c, 0x67,
|
||||
0xf0, 0x16, 0xcc, 0x86, 0x20, 0xce, 0x75, 0x22, 0x82, 0x44, 0xcf, 0x5c, 0xf6, 0x9e, 0xd6, 0x9d,
|
||||
0x0a, 0x0b, 0xc0, 0x89, 0x33, 0x95, 0x89, 0xb0, 0x5e, 0x45, 0xd4, 0x66, 0xf0, 0xfe, 0x49, 0xb5,
|
||||
0x0e, 0x60, 0x83, 0x71, 0x2a, 0x67, 0x45, 0x16, 0x59, 0xf0, 0x94, 0x5e, 0x75, 0xa6, 0x11, 0x18,
|
||||
0xe2, 0xe0, 0x5f, 0x6a, 0xa8, 0x00, 0xdd, 0x14, 0x96, 0x15, 0x4e, 0x1a, 0xcd, 0x84, 0x13, 0x47,
|
||||
0x26, 0xda, 0x01, 0xda, 0x1a, 0x78, 0x1b, 0x01, 0x9d, 0x8c, 0x36, 0xe8, 0x21, 0x5a, 0x2a, 0x98,
|
||||
0x22, 0x22, 0xad, 0xbc, 0x20, 0xcd, 0xb4, 0xd1, 0x13, 0x9d, 0xec, 0xed, 0xb9, 0x36, 0x4a, 0xbb,
|
||||
0xbe, 0x6b, 0xa3, 0x9b, 0x13, 0x45, 0x32, 0x32, 0x3a, 0x83, 0x54, 0x8a, 0xcc, 0xa1, 0x11, 0x0b,
|
||||
0xc2, 0xc1, 0x64, 0x98, 0x32, 0xcf, 0xbb, 0xbf, 0xaf, 0xc8, 0xc0, 0xbf, 0x48, 0xa1, 0xf0, 0xcf,
|
||||
0x90, 0xef, 0x7c, 0xd2, 0xb1, 0x08, 0x9c, 0xb3, 0x44, 0x44, 0xb9, 0x70, 0x60, 0x08, 0x91, 0x39,
|
||||
0x14, 0x49, 0xce, 0xf0, 0x0c, 0x2a, 0xf9, 0x5b, 0x12, 0xf3, 0x6d, 0x89, 0x65, 0x4a, 0xf1, 0x3c,
|
||||
0x50, 0xc5, 0xd0, 0xd7, 0xa6, 0x0a, 0xec, 0x41, 0x19, 0x82, 0x15, 0x0b, 0xe6, 0x05, 0x52, 0xc1,
|
||||
0xa0, 0x1f, 0x7e, 0xfb, 0x74, 0xc2, 0x19, 0xdb, 0xca, 0x0b, 0x3f, 0x37, 0xf3, 0x02, 0xe7, 0xbc,
|
||||
0x8d, 0x44, 0x20, 0x76, 0x38, 0x77, 0xbb, 0xf7, 0xdb, 0x09, 0x64, 0xf8, 0x14, 0x21, 0x7f, 0x44,
|
||||
0x38, 0x99, 0x8b, 0xc9, 0x15, 0x05, 0xa7, 0xb7, 0xa4, 0x84, 0xa7, 0xb8, 0x08, 0x28, 0x61, 0x06,
|
||||
0x99, 0x48, 0x93, 0x68, 0x82, 0xf0, 0x39, 0xbf, 0x40, 0x94, 0x41, 0xa3, 0xbc, 0x18, 0xe7, 0x26,
|
||||
0x73, 0x0f, 0x5e, 0x79, 0x7d, 0x39, 0x75, 0x19, 0x34, 0x1e, 0x8b, 0x0c, 0x16, 0x16, 0x01, 0x45,
|
||||
0x22, 0x32, 0x14, 0xd0, 0x8b, 0x57, 0x55, 0x13, 0x76, 0xfd, 0x57, 0x9e, 0xb7, 0xa4, 0x38, 0x20,
|
||||
0xb9, 0x12, 0x71, 0x20, 0x07, 0x16, 0xf5, 0x55, 0x14, 0x48, 0x44, 0x01, 0x04, 0x99, 0x1d, 0x4e,
|
||||
0xb0, 0x3f, 0x97, 0x17, 0xde, 0x12, 0xaf, 0x22, 0xb8, 0x8e, 0x92, 0x02, 0x7a, 0x12, 0x29, 0x16,
|
||||
0x21, 0x57, 0x4e, 0x21, 0x76, 0x43, 0x04, 0x5b, 0x9a, 0x3b, 0x00, 0x0b, 0x4e, 0xd4, 0x19, 0x67,
|
||||
0x89, 0x5c, 0x08, 0xd6, 0x1f, 0x23, 0x99, 0x5c, 0xad, 0x9e, 0xe0, 0xbf, 0xbf, 0xaf, 0x56, 0x06,
|
||||
0x07, 0x87, 0xeb, 0xe7, 0x70, 0x03, 0xe4, 0x47, 0xf2, 0x32, 0x11, 0xd7, 0xe2, 0xb6, 0xbf, 0xd8,
|
||||
0x98, 0x27, 0x96, 0x20, 0xd7, 0x0b, 0xe1, 0x1a, 0x1e, 0x1a, 0xec, 0x42, 0xb5, 0x6e, 0x88, 0xfc,
|
||||
0x55, 0x49, 0xf6, 0x0f, 0xbb, 0x9e, 0x77, 0xc4, 0xe0, 0x73, 0x35, 0x13, 0xac, 0xc7, 0x5e, 0x4c,
|
||||
0xa7, 0x53, 0xb6, 0x5a, 0x89, 0x24, 0x17, 0xcb, 0xfc, 0x46, 0x9a, 0xc9, 0xdc, 0x2d, 0xed, 0xeb,
|
||||
0x2d, 0x27, 0x00, 0x0d, 0x43, 0xf0, 0xb2, 0x5e, 0xf9, 0x74, 0x7c, 0x52, 0x3d, 0x51, 0x80, 0x6e,
|
||||
0x16, 0x3f, 0xd6, 0xab, 0x08, 0x42, 0xd6, 0xb3, 0x8a, 0xf5, 0x63, 0x31, 0x8d, 0x8a, 0xc4, 0xf4,
|
||||
0x4a, 0xef, 0xae, 0xc8, 0xc6, 0x4f, 0xdb, 0xf7, 0xbb, 0x2c, 0x6a, 0xf4, 0x22, 0x32, 0xfa, 0xff,
|
||||
0xde, 0xa6, 0x1b, 0x08, 0x23, 0x5a, 0xcf, 0xa0, 0x19, 0xe1, 0x1d, 0xda, 0x96, 0xa5, 0xd3, 0x23,
|
||||
0xa3, 0x50, 0x0e, 0x32, 0xe7, 0xca, 0x97, 0x17, 0xc8, 0x2b, 0xa7, 0xb6, 0x80, 0x06, 0x08, 0xd3,
|
||||
0x4c, 0x0a, 0x22, 0xf6, 0x2a, 0x62, 0xe9, 0x79, 0xb6, 0xcc, 0x73, 0xe5, 0xd7, 0x92, 0xa4, 0xd7,
|
||||
0x27, 0x97, 0x39, 0x04, 0xf4, 0x1a, 0xd6, 0xdf, 0x08, 0x08, 0x92, 0xb4, 0x5d, 0x8b, 0x65, 0xa9,
|
||||
0x00, 0x21, 0xdf, 0xc0, 0x33, 0x66, 0x20, 0x6b, 0xb7, 0x18, 0x82, 0xfd, 0xb9, 0xb9, 0x08, 0x79,
|
||||
0x17, 0x39, 0x68, 0x53, 0x06, 0x68, 0xad, 0x59, 0x01, 0xac, 0x4a, 0x5e, 0xad, 0xc7, 0x23, 0xea,
|
||||
0xe7, 0x49, 0x9f, 0x51, 0xe5, 0x09, 0x35, 0xd6, 0xa7, 0xa5, 0xad, 0x1b, 0xa9, 0x03, 0x2d, 0xd6,
|
||||
0x71, 0x94, 0x6e, 0xd2, 0x07, 0xc3, 0x31, 0x91, 0x9c, 0xd9, 0xce, 0xba, 0xf7, 0x38, 0x62, 0xac,
|
||||
0x07, 0x1f, 0xa2, 0xd3, 0x7b, 0x63, 0xdc, 0xae, 0x17, 0x18, 0xfd, 0x19, 0x35, 0x35, 0x3b, 0x06,
|
||||
0x50, 0x5d, 0xaf, 0x0d, 0x1f, 0x27, 0xe8, 0xd8, 0xdc, 0xc3, 0x86, 0x50, 0xd4, 0x8a, 0x9f, 0xa5,
|
||||
0x40, 0xc1, 0x45, 0xa6, 0xf1, 0xe1, 0x11, 0xf4, 0x47, 0x6b, 0x6f, 0x29, 0xe4, 0x09, 0xdb, 0x5c,
|
||||
0xb5, 0xf9, 0xfe, 0x60, 0x9e, 0x39, 0x93, 0x24, 0xca, 0x73, 0xce, 0xf2, 0x45, 0xc2, 0xc2, 0x7d,
|
||||
0x9f, 0x15, 0xea, 0x4a, 0xe1, 0x88, 0x04, 0x59, 0x43, 0x70, 0x93, 0x6a, 0x92, 0x14, 0x31, 0x5c,
|
||||
0x08, 0x2c, 0x50, 0x62, 0xae, 0x58, 0x2f, 0x07, 0x69, 0x38, 0x28, 0xc2, 0xdd, 0x65, 0xad, 0xbf,
|
||||
0xf1, 0x56, 0x83, 0x4e, 0x11, 0x0e, 0x3a, 0x69, 0x78, 0x59, 0x16, 0xe4, 0x12, 0x0f, 0xd2, 0xd7,
|
||||
0x4f, 0xe0, 0x01, 0x4a, 0x7c, 0x7b, 0xa7, 0xa3, 0xc6, 0x11, 0x20, 0xc2, 0xeb, 0x6d, 0xde, 0xdb,
|
||||
0xf8, 0xde, 0x36, 0x76, 0x75, 0xf5, 0xb4, 0x13, 0xd4, 0x06, 0x0f, 0x1a, 0x8e, 0xd0, 0x03, 0x55,
|
||||
0x3b, 0x42, 0xc3, 0x11, 0xdb, 0xc6, 0x39, 0xd7, 0x17, 0x3e, 0x1a, 0x25, 0xeb, 0x4e, 0x9b, 0x93,
|
||||
0x73, 0x3f, 0xab, 0x2d, 0xaf, 0xfa, 0x55, 0x16, 0xc9, 0xaa, 0x04, 0x32, 0xd6, 0x28, 0xb2, 0x91,
|
||||
0x62, 0x3d, 0x84, 0x99, 0x4d, 0xe5, 0x63, 0x7d, 0xcb, 0xfc, 0x9c, 0xef, 0x97, 0x21, 0xcb, 0x4c,
|
||||
0x56, 0x08, 0xb6, 0xdf, 0x76, 0xd5, 0x11, 0x2b, 0x53, 0x3d, 0x42, 0xb1, 0x07, 0xf4, 0x96, 0xe1,
|
||||
0xd8, 0xb7, 0x32, 0xaa, 0x54, 0xde, 0xcb, 0xf9, 0x65, 0xc5, 0xb5, 0xbb, 0x54, 0x2b, 0x76, 0xe9,
|
||||
0x57, 0xd8, 0xe7, 0xa6, 0x81, 0xf5, 0x23, 0x97, 0x6c, 0xed, 0x50, 0x3b, 0x00, 0xb2, 0x46, 0x47,
|
||||
0xc0, 0x9c, 0x85, 0x54, 0x9c, 0x1d, 0x1c, 0xb2, 0xb5, 0x03, 0x21, 0x02, 0x6a, 0x49, 0x85, 0xae,
|
||||
0xac, 0x47, 0xce, 0x75, 0xd0, 0x27, 0xa4, 0x9c, 0x45, 0xea, 0x6e, 0x4d, 0x73, 0x7b, 0x9b, 0xb0,
|
||||
0xfd, 0xfe, 0x83, 0xb4, 0xc6, 0x6d, 0x57, 0x47, 0xc7, 0xd8, 0x52, 0xc8, 0xb1, 0xa9, 0xa3, 0x1a,
|
||||
0x0b, 0x7a, 0x2f, 0x7f, 0xec, 0xa6, 0xb7, 0x7d, 0x76, 0xb9, 0xaa, 0xfd, 0xef, 0x6c, 0xb9, 0xde,
|
||||
0x81, 0xfa, 0x6b, 0x83, 0x70, 0x9e, 0x1d, 0xad, 0x61, 0x22, 0x55, 0x5a, 0x18, 0x87, 0x0c, 0xca,
|
||||
0xd9, 0x5c, 0xc6, 0x31, 0x46, 0x17, 0xa7, 0x9c, 0x11, 0x76, 0x97, 0x62, 0xd5, 0xdb, 0x5d, 0x9a,
|
||||
0x15, 0x24, 0x1d, 0x51, 0x9c, 0xc3, 0x52, 0xd8, 0xb6, 0xd2, 0x61, 0x1a, 0xc1, 0x21, 0x2c, 0xbc,
|
||||
0xec, 0xc9, 0x26, 0xe8, 0xbe, 0x57, 0xda, 0xee, 0x32, 0x5b, 0x41, 0x98, 0xe7, 0x3f, 0x29, 0x69,
|
||||
0x77, 0x69, 0xcd, 0xc6, 0x49, 0xf1, 0xb5, 0x7f, 0xc0, 0xf0, 0x6d, 0xd1, 0xbb, 0xcb, 0x7c, 0x85,
|
||||
0x2e, 0xcb, 0x0a, 0xaa, 0xe0, 0xe0, 0x9a, 0xb9, 0xcc, 0xfd, 0xfd, 0x5d, 0x4a, 0xc9, 0xa5, 0x0f,
|
||||
0x09, 0xd6, 0xb1, 0xb8, 0x3d, 0x9d, 0x5a, 0x54, 0xb7, 0x11, 0xa4, 0xfb, 0x1e, 0x86, 0xa2, 0x71,
|
||||
0x16, 0x5e, 0xae, 0xb6, 0xe2, 0xf5, 0x5d, 0xa6, 0x53, 0xf4, 0x4e, 0xaa, 0x6c, 0x0e, 0x9e, 0x6b,
|
||||
0xdb, 0x45, 0x42, 0x63, 0x89, 0x87, 0x88, 0x6e, 0x0e, 0x34, 0xf9, 0xdb, 0xbb, 0x5f, 0xa1, 0x69,
|
||||
0x1d, 0x1a, 0xde, 0xf9, 0xe1, 0x05, 0x75, 0x0d, 0x12, 0xc5, 0x67, 0xf8, 0xeb, 0xd9, 0xe7, 0xdf,
|
||||
0xe8, 0x64, 0x32, 0x30, 0xd1, 0x8c, 0xa8, 0x90, 0xd9, 0x4a, 0x87, 0x97, 0x8b, 0x30, 0xc0, 0xfd,
|
||||
0xfd, 0xa6, 0xbf, 0xa8, 0x96, 0xbc, 0x52, 0x05, 0x81, 0x57, 0x6b, 0xc1, 0xbe, 0xb4, 0x75, 0xb4,
|
||||
0xbf, 0x1d, 0x56, 0x32, 0x88, 0xea, 0xc6, 0x7f, 0x5d, 0x08, 0xdb, 0x6d, 0x5d, 0xf6, 0x36, 0x39,
|
||||
0x6f, 0x7e, 0x46, 0x98, 0xf5, 0xcb, 0x21, 0x62, 0x87, 0xe7, 0x56, 0x16, 0x94, 0xb3, 0xa2, 0x9b,
|
||||
0x0b, 0x16, 0xa6, 0xcd, 0x05, 0x8b, 0xc1, 0xc6, 0xc2, 0x83, 0x69, 0xa3, 0x5c, 0xf6, 0xf3, 0x52,
|
||||
0x49, 0x6f, 0x55, 0x35, 0x60, 0x0f, 0x67, 0x12, 0x6a, 0x5b, 0x0f, 0x40, 0x62, 0x7b, 0x60, 0x19,
|
||||
0xa0, 0xe4, 0xc1, 0x68, 0x95, 0xed, 0xea, 0x4a, 0x53, 0x0d, 0x28, 0x3e, 0x72, 0xbd, 0x5a, 0xcb,
|
||||
0x29, 0x92, 0x64, 0xcb, 0x49, 0xa7, 0x29, 0x3d, 0x95, 0x89, 0xc3, 0x26, 0x54, 0xa2, 0x80, 0xd1,
|
||||
0x84, 0x57, 0x72, 0xf4, 0xc9, 0x68, 0xf2, 0xb1, 0xdf, 0xb4, 0xe5, 0x43, 0x1e, 0xa8, 0xcc, 0x89,
|
||||
0xe2, 0x07, 0x3b, 0xc3, 0x09, 0xdc, 0xf8, 0x62, 0x6b, 0x42, 0x92, 0x9b, 0x61, 0xa6, 0xac, 0x21,
|
||||
0x94, 0xf8, 0xf1, 0xe1, 0x57, 0x34, 0xbf, 0x79, 0xb3, 0x9c, 0x2c, 0x9b, 0x1f, 0x50, 0x52, 0xea,
|
||||
0xae, 0x41, 0x04, 0x74, 0x5a, 0x9c, 0x9f, 0x16, 0xe0, 0x6b, 0x6a, 0x86, 0x09, 0x34, 0x22, 0x1e,
|
||||
0x12, 0x10, 0x39, 0x82, 0x75, 0xeb, 0x48, 0x43, 0x35, 0xd5, 0xeb, 0x32, 0x81, 0x54, 0x65, 0xfd,
|
||||
0xae, 0x9f, 0x86, 0x97, 0xd7, 0xd7, 0x95, 0x0a, 0x04, 0xa2, 0xaa, 0x4e, 0xad, 0x67, 0x64, 0xb3,
|
||||
0xb7, 0xa7, 0x31, 0x37, 0x1d, 0xd1, 0x9f, 0xc0, 0xda, 0x74, 0xae, 0x93, 0x18, 0x95, 0xde, 0xf4,
|
||||
0x34, 0x14, 0x24, 0x16, 0x78, 0x52, 0x11, 0x15, 0xd4, 0x45, 0x29, 0xc4, 0x2c, 0xf2, 0x26, 0xfe,
|
||||
0x0a, 0x3a, 0x65, 0xa8, 0xf7, 0xc6, 0xec, 0x38, 0x45, 0x53, 0x0f, 0x53, 0xa0, 0xe2, 0xef, 0xa9,
|
||||
0x71, 0x9e, 0xf6, 0x59, 0x1b, 0x13, 0x23, 0x71, 0xc9, 0x6f, 0x70, 0x8d, 0x05, 0x2c, 0x26, 0xc6,
|
||||
0x62, 0x86, 0xf4, 0xe9, 0xcb, 0x76, 0xcd, 0x8a, 0x76, 0xbf, 0x31, 0x15, 0x53, 0xdf, 0xbf, 0x9c,
|
||||
0x0a, 0x4a, 0xe6, 0x34, 0x5b, 0x1c, 0xd9, 0x11, 0x1d, 0x13, 0x3a, 0x6b, 0xdb, 0xd9, 0x80, 0x92,
|
||||
0x74, 0x9b, 0x75, 0x26, 0xd3, 0x59, 0xf0, 0x35, 0x87, 0xa7, 0xfc, 0xe5, 0x42, 0x98, 0xb9, 0x8e,
|
||||
0x7b, 0x0c, 0x66, 0x60, 0x2b, 0xd4, 0xdc, 0x39, 0x26, 0x6f, 0x4c, 0x5a, 0xb0, 0xa7, 0xbe, 0xaa,
|
||||
0x67, 0x07, 0x64, 0xa8, 0x2c, 0xa3, 0xde, 0xc4, 0x36, 0x59, 0xb1, 0xcc, 0x71, 0xea, 0x3b, 0x4a,
|
||||
0xc1, 0x89, 0x54, 0x02, 0x51, 0x2a, 0xac, 0x30, 0x17, 0x9a, 0xac, 0xf9, 0x09, 0x34, 0xe5, 0x4d,
|
||||
0x86, 0xc0, 0x74, 0xe9, 0x6f, 0x9a, 0xa9, 0x32, 0x33, 0xc1, 0x03, 0x3e, 0x15, 0x69, 0x4b, 0x82,
|
||||
0x20, 0xb4, 0x35, 0x14, 0x61, 0xf8, 0x70, 0xb0, 0xca, 0x45, 0x94, 0x4d, 0xe6, 0x98, 0xf1, 0x95,
|
||||
0xb8, 0x71, 0x3e, 0xff, 0xe3, 0x64, 0x64, 0xdf, 0xcf, 0xa2, 0x2c, 0x5a, 0x90, 0x30, 0x72, 0x5e,
|
||||
0x39, 0xda, 0x34, 0x2a, 0xb1, 0xf0, 0xd5, 0x13, 0x95, 0xb8, 0xda, 0xa9, 0x39, 0x40, 0x62, 0x76,
|
||||
0x47, 0x63, 0x48, 0x89, 0x62, 0x9d, 0x2d, 0xe7, 0x59, 0x38, 0x98, 0xbf, 0x0a, 0x29, 0x13, 0x0e,
|
||||
0x3a, 0x78, 0xb8, 0xf4, 0x1b, 0x55, 0x74, 0x5d, 0xc9, 0x11, 0x14, 0x5e, 0x9f, 0x42, 0x02, 0xbd,
|
||||
0x0b, 0x82, 0x97, 0xd2, 0x89, 0x95, 0x50, 0x4b, 0xe2, 0xac, 0xba, 0x06, 0xca, 0x1f, 0xcc, 0x9d,
|
||||
0x4a, 0x63, 0xe8, 0xd4, 0x85, 0x8a, 0x03, 0xca, 0x8c, 0x67, 0x99, 0xc8, 0x73, 0x67, 0x20, 0xc3,
|
||||
0x51, 0x74, 0x2d, 0x06, 0x1d, 0x19, 0x3a, 0x46, 0x3b, 0xd5, 0x55, 0x94, 0xfc, 0x0f, 0xa6, 0xd0,
|
||||
0xb2, 0x72, 0xe5, 0x01, 0x66, 0x35, 0xeb, 0x87, 0x59, 0xa2, 0xc7, 0x51, 0xf2, 0xcb, 0xd9, 0xf0,
|
||||
0x34, 0x7f, 0xec, 0x8d, 0xb5, 0x16, 0x47, 0x6c, 0x0c, 0xfb, 0x5d, 0x21, 0x45, 0x2a, 0x0d, 0xf7,
|
||||
0xf8, 0x4f, 0x8d, 0x7f, 0xe5, 0xad, 0x53, 0x75, 0x87, 0xf2, 0x0d, 0xa0, 0xd4, 0x37, 0x30, 0x9d,
|
||||
0x1c, 0x2e, 0x3e, 0x4a, 0xf9, 0x6b, 0xe6, 0xa3, 0xc5, 0x02, 0x4e, 0xe0, 0x1f, 0x9a, 0x3a, 0xe0,
|
||||
0xe8, 0x3f, 0x81, 0x10, 0xbf, 0x69, 0x75, 0xb1, 0x35, 0x56, 0xe7, 0xd7, 0x23, 0x6a, 0x09, 0x05,
|
||||
0x46, 0x68, 0x41, 0x53, 0xff, 0xbb, 0xf2, 0xcc, 0xf5, 0x35, 0x84, 0xad, 0x36, 0xbf, 0xc3, 0x1c,
|
||||
0xb1, 0x34, 0x77, 0xae, 0x47, 0x77, 0x15, 0x58, 0x45, 0xcd, 0x59, 0x48, 0xd0, 0xac, 0x5a, 0x83,
|
||||
0x4e, 0x75, 0xaf, 0x36, 0xb0, 0x3b, 0x87, 0x7f, 0x93, 0x0b, 0xba, 0x8e, 0x73, 0x8a, 0x2c, 0x71,
|
||||
0x59, 0x35, 0x13, 0x20, 0xd3, 0x7a, 0x7d, 0x10, 0x5a, 0x02, 0x78, 0x55, 0x44, 0x31, 0x0a, 0x93,
|
||||
0x8e, 0xef, 0x50, 0xd4, 0xc8, 0x02, 0x9c, 0x21, 0x66, 0x50, 0xab, 0x80, 0xa0, 0x45, 0xcb, 0x91,
|
||||
0x78, 0xa7, 0xa7, 0x2f, 0x79, 0x5d, 0x16, 0x47, 0x53, 0x34, 0x21, 0x36, 0x4a, 0x38, 0x4b, 0x75,
|
||||
0x6e, 0x18, 0xf8, 0x4a, 0x0d, 0xd0, 0x8c, 0x90, 0xfa, 0xa4, 0x37, 0x09, 0x88, 0xe5, 0x75, 0xdd,
|
||||
0x80, 0x18, 0x8d, 0x91, 0xfe, 0x86, 0x85, 0xad, 0xe6, 0xe2, 0x5c, 0x24, 0xe9, 0x5b, 0x2a, 0x8a,
|
||||
0x85, 0x31, 0x38, 0x7a, 0x59, 0x93, 0xcb, 0x17, 0x92, 0x39, 0x41, 0x7b, 0x7b, 0xc5, 0xd9, 0x07,
|
||||
0x52, 0xe6, 0x68, 0xd0, 0x29, 0x3f, 0x40, 0x61, 0x48, 0x58, 0xf3, 0xb4, 0x9e, 0x61, 0x7a, 0x4b,
|
||||
0x4c, 0x6f, 0xa3, 0xc9, 0xd5, 0x86, 0x6f, 0x6b, 0x97, 0x52, 0x5f, 0x56, 0x21, 0x6d, 0x4d, 0x92,
|
||||
0x41, 0xc1, 0x3c, 0x8d, 0x94, 0x3d, 0x75, 0x92, 0xe7, 0xc5, 0x64, 0xdd, 0x0e, 0xd9, 0x51, 0xaa,
|
||||
0x37, 0xcb, 0x84, 0x50, 0xfd, 0xca, 0x9f, 0x3d, 0x8b, 0xa7, 0x70, 0xef, 0xc5, 0x61, 0xb7, 0xdb,
|
||||
0xfd, 0xa1, 0xef, 0x1c, 0x6f, 0xdf, 0xa9, 0x40, 0x74, 0xbc, 0x43, 0x1e, 0x81, 0xc0, 0xd0, 0x69,
|
||||
0xca, 0x25, 0x6c, 0x6c, 0xcb, 0xc5, 0xec, 0xf6, 0x40, 0x6a, 0x6b, 0xef, 0xc5, 0x4f, 0xaf, 0x5f,
|
||||
0xbf, 0x26, 0xa9, 0x45, 0x12, 0xdb, 0x48, 0x21, 0xe7, 0x6c, 0x07, 0x50, 0x50, 0x49, 0xaf, 0x8c,
|
||||
0x42, 0xb6, 0xa5, 0x1d, 0x9a, 0x71, 0xe1, 0xb4, 0xaa, 0x8d, 0xb6, 0xc5, 0x97, 0x91, 0xfd, 0xb2,
|
||||
0x79, 0x3f, 0x5b, 0xa4, 0x00, 0xc3, 0xcb, 0xf0, 0x17, 0xcb, 0xec, 0x0c, 0x07, 0x79, 0x91, 0x86,
|
||||
0x2f, 0xb1, 0x01, 0x7e, 0x8e, 0x1d, 0x2b, 0xcc, 0x71, 0x3f, 0xfc, 0xe1, 0xb5, 0xc8, 0x4c, 0x03,
|
||||
0xb9, 0xad, 0x7f, 0x35, 0x36, 0x86, 0x2e, 0x20, 0x74, 0x47, 0x97, 0xd3, 0x6a, 0x46, 0x57, 0xc3,
|
||||
0x74, 0x19, 0xf5, 0x7e, 0x74, 0xf6, 0xea, 0xa5, 0x5f, 0xae, 0x09, 0x27, 0x13, 0xff, 0x2e, 0x24,
|
||||
0xe2, 0x1c, 0x0f, 0x68, 0xaa, 0xcd, 0x0e, 0xc4, 0x21, 0xd0, 0x49, 0x24, 0x86, 0xf4, 0xde, 0x56,
|
||||
0x77, 0x56, 0xf5, 0x26, 0x9b, 0x86, 0xd7, 0x76, 0xc3, 0x3f, 0xbc, 0x5e, 0xe3, 0x10, 0x53, 0xbd,
|
||||
0xd3, 0x82, 0xcb, 0xad, 0x64, 0xbe, 0xdf, 0xe8, 0xc4, 0x68, 0xf6, 0xf6, 0xf6, 0x37, 0x1d, 0xb2,
|
||||
0xd3, 0x2c, 0x4b, 0x96, 0x31, 0x74, 0x30, 0xf5, 0xd7, 0xfb, 0xb5, 0xfe, 0xe4, 0x86, 0xc7, 0x27,
|
||||
0x16, 0x62, 0xcf, 0xee, 0xd7, 0x7a, 0x6e, 0x43, 0x30, 0x86, 0x0f, 0x67, 0xae, 0xca, 0xce, 0xa3,
|
||||
0xb3, 0x61, 0xc3, 0xb8, 0x95, 0x6d, 0x5b, 0xff, 0x23, 0xe3, 0xd6, 0xb6, 0x6d, 0xd1, 0x6d, 0xc7,
|
||||
0x5f, 0xb3, 0xae, 0xbd, 0x1f, 0xf9, 0x2e, 0xf3, 0x5a, 0xce, 0xd0, 0xa1, 0xab, 0x94, 0xbf, 0x68,
|
||||
0x60, 0x7b, 0xfb, 0xf2, 0x5d, 0x16, 0xb6, 0x9c, 0xd6, 0xa7, 0x1f, 0xff, 0xec, 0x31, 0x5b, 0x6b,
|
||||
0xa7, 0x7e, 0xfc, 0xf6, 0x9e, 0xcf, 0x3b, 0xf5, 0x23, 0x6b, 0x46, 0x5e, 0x8b, 0x42, 0x0f, 0x75,
|
||||
0x25, 0xac, 0xaf, 0x59, 0xeb, 0x62, 0x11, 0x04, 0x41, 0x45, 0x46, 0x41, 0xf7, 0xed, 0x6c, 0xb7,
|
||||
0x4e, 0x5c, 0xad, 0xbf, 0x94, 0xb9, 0x3a, 0x94, 0xa2, 0xf1, 0x43, 0x69, 0x9c, 0x72, 0x3a, 0xfd,
|
||||
0xe3, 0xe8, 0xbf, 0x5d, 0x68, 0x0b, 0x12, 0x4e, 0x1a, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
|
||||
1020
wled00/html_ui.h
1020
wled00/html_ui.h
File diff suppressed because it is too large
Load Diff
@@ -110,7 +110,7 @@ void changePalette(uint8_t pal)
|
||||
for (uint8_t i = 0; i < strip.getSegmentsNum(); i++) {
|
||||
Segment& seg = strip.getSegment(i);
|
||||
if (!seg.isActive() || !seg.isSelected()) continue;
|
||||
seg.palette = pal;
|
||||
seg.setPalette(pal);
|
||||
}
|
||||
setValuesFromFirstSelectedSeg();
|
||||
} else {
|
||||
|
||||
@@ -243,7 +243,7 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
|
||||
getVal(elem["ix"], &seg.intensity);
|
||||
|
||||
uint8_t pal = seg.palette;
|
||||
if (getVal(elem["pal"], &pal, 1, strip.getPaletteCount())) seg.setPalette(pal);
|
||||
if (getVal(elem["pal"], &pal)) seg.setPalette(pal);
|
||||
|
||||
getVal(elem["c1"], &seg.custom1);
|
||||
getVal(elem["c2"], &seg.custom2);
|
||||
@@ -678,7 +678,6 @@ void serializeInfo(JsonObject root)
|
||||
leds[F("maxseg")] = strip.getMaxSegments();
|
||||
//leds[F("actseg")] = strip.getActiveSegmentsNum();
|
||||
//leds[F("seglock")] = false; //might be used in the future to prevent modifications to segment config
|
||||
leds[F("cpal")] = strip.customPalettes.size(); //number of custom palettes
|
||||
|
||||
#ifndef WLED_DISABLE_2D
|
||||
if (strip.isMatrix) {
|
||||
@@ -748,6 +747,7 @@ void serializeInfo(JsonObject root)
|
||||
|
||||
root[F("fxcount")] = strip.getModeCount();
|
||||
root[F("palcount")] = strip.getPaletteCount();
|
||||
root[F("cpalcount")] = strip.customPalettes.size(); //number of custom palettes
|
||||
|
||||
JsonArray ledmaps = root.createNestedArray(F("maps"));
|
||||
for (size_t i=0; i<10; i++) {
|
||||
|
||||
@@ -12,7 +12,7 @@ static volatile byte presetToApply = 0;
|
||||
static volatile byte callModeToApply = 0;
|
||||
static volatile byte presetToSave = 0;
|
||||
static volatile int8_t saveLedmap = -1;
|
||||
static char quickLoad[3];
|
||||
static char quickLoad[9];
|
||||
static char saveName[33];
|
||||
static bool includeBri = true, segBounds = true, selectedOnly = false, playlistSave = false;
|
||||
|
||||
@@ -263,7 +263,7 @@ void savePreset(byte index, const char* pname, JsonObject sObj)
|
||||
|
||||
presetToSave = index;
|
||||
playlistSave = false;
|
||||
if (sObj[F("ql")].is<const char*>()) strlcpy(quickLoad, sObj[F("ql")].as<const char*>(), 3); // only 2 chars for QL
|
||||
if (sObj[F("ql")].is<const char*>()) strlcpy(quickLoad, sObj[F("ql")].as<const char*>(), 9); // client limits QL to 2 chars, buffer for 8 bytes to allow unicode
|
||||
sObj.remove("v");
|
||||
sObj.remove("time");
|
||||
sObj.remove(F("error"));
|
||||
|
||||
@@ -411,10 +411,10 @@ void handleNotifications()
|
||||
for (size_t i = 0; i < strip.getSegmentsNum(); i++) {
|
||||
Segment& seg = strip.getSegment(i);
|
||||
if (!seg.isActive() || !seg.isSelected()) continue;
|
||||
if (udpIn[8] < strip.getModeCount()) strip.setMode(i, udpIn[8]);
|
||||
seg.setMode(udpIn[8]);
|
||||
seg.speed = udpIn[9];
|
||||
if (version > 2) seg.intensity = udpIn[16];
|
||||
if (version > 4 && udpIn[19] < strip.getPaletteCount()) seg.palette = udpIn[19];
|
||||
if (version > 4) seg.setPalette(udpIn[19]);
|
||||
}
|
||||
stateChanged = true;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
// version code in format yymmddb (b = daily build)
|
||||
#define VERSION 2211242
|
||||
#define VERSION 2211250
|
||||
|
||||
//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