Merge remote-tracking branch 'upstream/mdev' into animartrix-library

This commit is contained in:
Will Tatam
2023-05-29 15:09:11 +01:00
21 changed files with 2116 additions and 1979 deletions

View File

@@ -13,14 +13,14 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/Aircoookie/WLED.git"
"url": "git+https://github.com/MoonModules/WLED.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/Aircoookie/WLED/issues"
"url": "https://github.com/MoonModules/WLED/issues"
},
"homepage": "https://github.com/Aircoookie/WLED#readme",
"homepage": "https://github.com/MoonModules/WLED#readme",
"dependencies": {
"clean-css": "^4.2.3",
"html-minifier-terser": "^5.1.1",

View File

@@ -146,7 +146,7 @@ build_flags =
-DSECURE_CLIENT=SECURE_CLIENT_BEARSSL
-DBEARSSL_SSL_BASIC
-D CORE_DEBUG_LEVEL=0
-D NDEBUG
;-D NDEBUG ;; WLEDMM espressif docs say NDEBUG is not recommended. see https://docs.espressif.com/projects/esp-idf/en/v4.4.4/esp32/api-guides/performance/speed.html#not-recommended
#build_flags for the IRremoteESP8266 library (enabled decoders have to appear here)
-D _IR_ENABLE_DEFAULT_=false
-D DECODE_HASH=true
@@ -825,7 +825,7 @@ build_flags_S =
; -D WLED_ENABLE_DMX
lib_deps_S =
https://github.com/kosme/arduinoFFT#develop @ 1.9.2+sha.e5e4c74 ; used for USERMOD_AUDIOREACTIVE - using "known working" hash
https://github.com/kosme/arduinoFFT#develop @ 1.9.2+sha.419d7b0 ; used for USERMOD_AUDIOREACTIVE - using "known working" hash
build_flags_M =
-D WLED_MAX_USERMODS=25 ; default only 4-6, also for _XL configs takes 25 pointers in memory
@@ -974,6 +974,7 @@ build_flags =
[Debug_Flags]
build_flags =
-DDEBUG=1 ;; enable some debug assertions in the platform core
-D WLED_DEBUG ; lots of generic debug messages
-D SR_DEBUG ; some extra debug messages from audioreactive
; -D MIC_LOGGER ; for sound input monitoring & debugging (use arduino serial plotter)

View File

@@ -63,6 +63,7 @@ function adoptVersionAndRepo(html) {
// Replace we
html = strReplace(html, "https://github.com/atuline/WLED", repoUrl);
html = strReplace(html, "https://github.com/Aircoookie/WLED", repoUrl);
html = strReplace(html, "https://github.com/MoonModules/WLED", repoUrl); //WLEDMM
}
let version = packageJson.version;
if (version) {

View File

@@ -294,6 +294,7 @@ static float windowWeighingFactors[samplesFFT] = {0.0f};
//#define FFT_SQRT_APPROXIMATION // enables "quake3" style inverse sqrt - WLEDMM slower on ESP32
#endif
#define sqrt(x) sqrtf(x) // little hack that reduces FFT time by 10-50% on ESP32 (as alternative to FFT_SQRT_APPROXIMATION)
#define sqrt_internal sqrtf // see https://github.com/kosme/arduinoFFT/pull/83
#else
// around 50% slower on -S2
// lib_deps += https://github.com/blazoncek/arduinoFFT.git

View File

@@ -106,6 +106,9 @@
#endif
// max number of samples for a single i2s_read --> size of global buffer.
#define I2S_SAMPLES_MAX 512 // same as samplesFFT
/* Interface class
AudioSource serves as base class for all microphone types
This enables accessing all microphones with one single interface
@@ -162,6 +165,7 @@ class AudioSource {
bool _initialized; // Gets set to true if initialization is successful
bool _i2sMaster; // when false, ESP32 will be in I2S SLAVE mode (for devices that only operate in MASTER mode). Only workds in newer IDF >= 4.4.x
float _sampleScale; // pre-scaling factor for I2S samples
I2S_datatype newSampleBuffer[I2S_SAMPLES_MAX+4] = { 0 }; // global buffer for i2s_read
};
/* Basic I2S microphone source
@@ -345,17 +349,20 @@ class I2SSource : public AudioSource {
if (_initialized) {
esp_err_t err;
size_t bytes_read = 0; /* Counter variable to check if we actually got enough data */
I2S_datatype newSamples[num_samples]; /* Intermediary sample storage */
err = i2s_read(I2S_NUM_0, (void *)newSamples, sizeof(newSamples), &bytes_read, portMAX_DELAY);
memset(buffer, 0, sizeof(float) * num_samples); // clear output buffer
I2S_datatype *newSamples = newSampleBuffer; // use global input buffer
if (num_samples > I2S_SAMPLES_MAX) num_samples = I2S_SAMPLES_MAX; // protect the buffer from overflow
err = i2s_read(I2S_NUM_0, (void *)newSamples, num_samples * sizeof(I2S_datatype), &bytes_read, portMAX_DELAY);
if (err != ESP_OK) {
DEBUGSR_PRINTF("Failed to get samples: %d\n", err);
return;
}
// For correct operation, we need to read exactly sizeof(samples) bytes from i2s
if (bytes_read != sizeof(newSamples)) {
DEBUGSR_PRINTF("Failed to get enough samples: wanted: %d read: %d\n", sizeof(newSamples), bytes_read);
if (bytes_read != (num_samples * sizeof(I2S_datatype))) {
DEBUGSR_PRINTF("Failed to get enough samples: wanted: %d read: %d\n", num_samples * sizeof(I2S_datatype), bytes_read);
return;
}
@@ -520,27 +527,74 @@ class ES8388Source : public I2SSource {
void _es8388InitAdc() {
// https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Section 10.1
// http://www.everest-semi.com/pdf/ES8388%20DS.pdf Better spec sheet, more clear.
// https://docs.google.com/spreadsheets/d/1CN3MvhkcPVESuxKyx1xRYqfUit5hOdsG45St9BCUm-g/edit#gid=0 generally
// Sets ADC to around what AudioReactive expects, and loops line-in to line-out/headphone for monitoring.
// Registries are decimal, settings are binary as that's how everything is listed in the docs
// ...which makes it easier to reference the docs.
//
_es8388I2cBegin();
_es8388I2cWrite(0x08,0x00); // I2S to slave
_es8388I2cWrite(0x02,0xf3); // Power down DEM and STM
_es8388I2cWrite(0x2b,0x80); // Set same LRCK
_es8388I2cWrite(0x00,0x05); // Set chip to Play & Record Mode
_es8388I2cWrite(0x0d,0x02); // Set MCLK/LRCK ratio to 256
_es8388I2cWrite(0x01,0x40); // Power up analog and lbias
_es8388I2cWrite(0x03,0x00); // Power up ADC, Analog Input, and Mic Bias
_es8388I2cWrite(0x0a,0x50); // Use Lin2/Rin2 for ADC input ("line-in")
_es8388I2cWrite(0x09,0x00); // Select Analog Input PGA Gain for ADC to 0dB (L+R)
_es8388I2cWrite(0x10,0b01000000); // Set ADC digital volume attenuation to -32dB (left)
_es8388I2cWrite(0x11,0b01000000); // Set ADC digital volume attenuation to -32dB (right)
_es8388I2cWrite(0x04,0x0c); // Turn on LOUT2 and ROUT2 power
_es8388I2cWrite(0x02,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp"
_es8388I2cWrite(0x26,0x09); // Mixer - route LIN2/RIN2 to output
_es8388I2cWrite(0x27,0b01010000); // Mixer - route LIN to left mixer, 0dB gain
_es8388I2cWrite(0x2a,0b01010000); // Mixer - route RIN to right mixer, 0dB gain
_es8388I2cWrite(0x30,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB
_es8388I2cWrite(0x31,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB
_es8388I2cWrite( 8,0b00000000); // I2S to slave
_es8388I2cWrite( 2,0b11110011); // Power down DEM and STM
_es8388I2cWrite(43,0b10000000); // Set same LRCK
_es8388I2cWrite( 0,0b00000101); // Set chip to Play & Record Mode
_es8388I2cWrite(13,0b00000010); // Set MCLK/LRCK ratio to 256
_es8388I2cWrite( 1,0b01000000); // Power up analog and lbias
_es8388I2cWrite( 3,0b00000000); // Power up ADC, Analog Input, and Mic Bias
_es8388I2cWrite( 4,0b11111100); // Power down DAC, Turn on LOUT1 and ROUT1 and LOUT2 and ROUT2 power
_es8388I2cWrite( 2,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp"
// #define use_es8388_mic
#ifdef use_es8388_mic
// The mics *and* line-in are BOTH connected to LIN2/RIN2 on the AudioKit
// so there's no way to completely eliminate the mics. It's also hella noisy.
// Line-in works OK on the AudioKit, generally speaking, as the mics really need
// amplification to be noticable in a quiet room. If you're in a very loud room,
// the mics on the AudioKit WILL pick up sound even in line-in mode.
// TL;DR: Don't use the AudioKit for anything, use the LyraT.
//
// The LyraT does a reasonable job with mic input as configured below.
// Pick one of these. If you have to use the mics, use a LyraT over an AudioKit if you can:
_es8388I2cWrite(10,0b00000000); // Use Lin1/Rin1 for ADC input (mic on LyraT)
//_es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input (mic *and* line-in on AudioKit)
_es8388I2cWrite( 9,0b10001000); // Select Analog Input PGA Gain for ADC to +24dB (L+R)
_es8388I2cWrite(16,0b00000000); // Set ADC digital volume attenuation to 0dB (left)
_es8388I2cWrite(17,0b00000000); // Set ADC digital volume attenuation to 0dB (right)
_es8388I2cWrite(38,0b00011011); // Mixer - route LIN1/RIN1 to output after mic gain
_es8388I2cWrite(39,0b01000000); // Mixer - route LIN to mixL, +6dB gain
_es8388I2cWrite(42,0b01000000); // Mixer - route RIN to mixR, +6dB gain
_es8388I2cWrite(46,0b00100001); // LOUT1VOL - 0b00100001 = +4.5dB
_es8388I2cWrite(47,0b00100001); // ROUT1VOL - 0b00100001 = +4.5dB
_es8388I2cWrite(48,0b00100001); // LOUT2VOL - 0b00100001 = +4.5dB
_es8388I2cWrite(49,0b00100001); // ROUT2VOL - 0b00100001 = +4.5dB
// Music ALC - the mics like Auto Level Control
// You can also use this for line-in, but it's not really needed.
//
_es8388I2cWrite(18,0b11111000); // ALC: stereo, max gain +35.5dB, min gain -12dB
_es8388I2cWrite(19,0b00110000); // ALC: target -1.5dB, 0ms hold time
_es8388I2cWrite(20,0b10100110); // ALC: gain ramp up = 420ms/93ms, gain ramp down = check manual for calc
_es8388I2cWrite(21,0b00000110); // ALC: use "ALC" mode, no zero-cross, window 96 samples
_es8388I2cWrite(22,0b01011001); // ALC: noise gate threshold, PGA gain constant, noise gate enabled
#else
_es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input ("line-in")
_es8388I2cWrite( 9,0b00000000); // Select Analog Input PGA Gain for ADC to 0dB (L+R)
_es8388I2cWrite(16,0b01000000); // Set ADC digital volume attenuation to -32dB (left)
_es8388I2cWrite(17,0b01000000); // Set ADC digital volume attenuation to -32dB (right)
_es8388I2cWrite(38,0b00001001); // Mixer - route LIN2/RIN2 to output
_es8388I2cWrite(39,0b01010000); // Mixer - route LIN to mixL, 0dB gain
_es8388I2cWrite(42,0b01010000); // Mixer - route RIN to mixR, 0dB gain
_es8388I2cWrite(46,0b00011011); // LOUT1VOL - 0b00011110 = +0dB, 0b00011011 = LyraT balance fix
_es8388I2cWrite(47,0b00011110); // ROUT1VOL - 0b00011110 = +0dB
_es8388I2cWrite(48,0b00011110); // LOUT2VOL - 0b00011110 = +0dB
_es8388I2cWrite(49,0b00011110); // ROUT2VOL - 0b00011110 = +0dB
#endif
}
public:
@@ -551,6 +605,10 @@ class ES8388Source : public I2SSource {
void initialize(int8_t sdaPin, int8_t sclPin, int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) {
// BUG: "use global I2C pins" are valid as -1, and -1 is seen as invalid here.
// Workaround: Set I2C pins here, which will also set them globally.
// Bug also exists in ES7243.
// check that pins are valid
if ((sdaPin < 0) || (sclPin < 0)) {
ERRORSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin);

View File

@@ -158,7 +158,7 @@ void ShtUsermod::cleanup()
* @return void
*/
void ShtUsermod::publishTemperatureAndHumidityViaMqtt() {
#ifdef WLED_ENABLED_MQTT
#ifdef WLED_ENABLE_MQTT
if (!WLED_MQTT_CONNECTED) return;
char buf[128];
@@ -179,7 +179,7 @@ void ShtUsermod::publishTemperatureAndHumidityViaMqtt() {
* @return void
*/
void ShtUsermod::publishHomeAssistantAutodiscovery() {
#ifdef WLED_ENABLED_MQTT
#ifdef WLED_ENABLE_MQTT
if (!WLED_MQTT_CONNECTED) return;
char json_str[1024], buf[128];
@@ -225,7 +225,7 @@ void ShtUsermod::publishHomeAssistantAutodiscovery() {
*
* @return void
*/
#ifdef WLED_ENABLED_MQTT
#ifdef WLED_ENABLE_MQTT
void ShtUsermod::appendDeviceToMqttDiscoveryMessage(JsonDocument& root) {
JsonObject device = root.createNestedObject(F("dev"));
device[F("ids")] = escapedMac.c_str();
@@ -339,7 +339,7 @@ void ShtUsermod::loop()
* @return void
*/
void ShtUsermod::onMqttConnect(bool sessionPresent) {
#ifdef WLED_ENABLED_MQTT
#ifdef WLED_ENABLE_MQTT
if (haMqttDiscovery && !haMqttDiscoveryDone) publishHomeAssistantAutodiscovery();
#endif
}

View File

@@ -383,7 +383,8 @@ typedef struct Segment {
uint16_t aux0; // custom var
uint16_t aux1; // custom var
byte* data; // effect data pointer
CRGB* leds; // local leds[] array (may be a pointer to global)
CRGB* ledsrgb; // local leds[] array (may be a pointer to global) //WLEDMM rename to ledsrgb to search on them (temp?)
uint16_t ledsrgbSize; //WLEDMM
static CRGB *_globalLeds; // global leds[] array
static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions)
void *jMap = nullptr; //WLEDMM jMap
@@ -468,7 +469,8 @@ typedef struct Segment {
aux0(0),
aux1(0),
data(nullptr),
leds(nullptr),
ledsrgb(nullptr),
ledsrgbSize(0), //WLEDMM
_capabilities(0),
_dataLen(0),
_t(nullptr)
@@ -486,13 +488,13 @@ typedef struct Segment {
~Segment() {
//#ifdef WLED_DEBUG
//Serial.print(F("Destroying segment:"));
//if (name) Serial.printf(" %s (%p)", name, name);
//if (data) Serial.printf(" %d (%p)", (int)_dataLen, data);
//if (leds) Serial.printf(" [%u]", length()*sizeof(CRGB));
//Serial.println();
Serial.print(F("Destroying segment:"));
if (name) Serial.printf(" %s (%p)", name, name);
if (data) Serial.printf(" %d (%p)", (int)_dataLen, data);
if (ledsrgb) Serial.printf(" [%u]", length()*sizeof(CRGB));
Serial.println();
//#endif
if (!Segment::_globalLeds && leds) free(leds);
if (!Segment::_globalLeds && ledsrgb) free(ledsrgb);
if (name) delete[] name;
if (_t) delete _t;
deallocateData();
@@ -502,7 +504,7 @@ typedef struct Segment {
Segment& operator= (Segment &&orig) noexcept; // move assignment
#ifdef WLED_DEBUG
size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (!Segment::_globalLeds && leds?sizeof(CRGB)*length():0); }
size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (!Segment::_globalLeds && ledsrgb?sizeof(CRGB)*length():0); }
#endif
inline bool getOption(uint8_t n) const { return ((options >> n) & 0x01); }
@@ -521,6 +523,8 @@ typedef struct Segment {
static uint16_t getUsedSegmentData(void) { return _usedSegmentData; }
static void addUsedSegmentData(int len) { _usedSegmentData += len; }
void allocLeds(); //WLEDMM
void set(uint16_t i1, uint16_t i2, uint8_t grp=1, uint8_t spc=0, uint16_t ofs=UINT16_MAX, uint16_t i1Y=0, uint16_t i2Y=1);
bool setColor(uint8_t slot, uint32_t c); //returns true if changed
void setCCT(uint16_t k);

View File

@@ -200,7 +200,7 @@ void IRAM_ATTR_YN Segment::setPixelColorXY(int x, int y, uint32_t col) //WLEDMM:
if (Segment::maxHeight==1) return; // not a matrix set-up
if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit
if (leds) leds[XY(x,y)] = col;
if (ledsrgb) ledsrgb[XY(x,y)] = col;
uint8_t _bri_t = currentBri(on ? opacity : 0);
if (!_bri_t && !transitional) return;
@@ -289,7 +289,7 @@ void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa)
// returns RGBW values of pixel
uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) {
int i = XY(x,y);
if (leds) return RGBW32(leds[i].r, leds[i].g, leds[i].b, 0);
if (ledsrgb) return RGBW32(ledsrgb[i].r, ledsrgb[i].g, ledsrgb[i].b, 0);
if (reverse ) x = virtualWidth() - x - 1;
if (reverse_y) y = virtualHeight() - y - 1;
if (transpose) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed

View File

@@ -83,40 +83,55 @@ uint16_t Segment::maxHeight = 1;
// copy constructor
Segment::Segment(const Segment &orig) {
//DEBUG_PRINTLN(F("-- Copy segment constructor --"));
memcpy((void*)this, (void*)&orig, sizeof(Segment));
USER_PRINTLN(F("-- Copy segment constructor --"));
memcpy((void*)this, (void*)&orig, sizeof(Segment)); //WLEDMM copy to this
name = nullptr;
data = nullptr;
_dataLen = 0;
_t = nullptr;
if (leds && !Segment::_globalLeds) leds = nullptr;
if (ledsrgb && !Segment::_globalLeds) ledsrgb = nullptr; //WLEDMM constructor so there was nothing. ledsrgb not freed as still used by orig!
if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); }
if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); }
if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); }
if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); }
if (orig.ledsrgb && !Segment::_globalLeds) { allocLeds(); if (ledsrgb) memcpy(ledsrgb, orig.ledsrgb, sizeof(CRGB)*length()); }
jMap = nullptr; //WLEDMM jMap
}
//WLEDMM: recreate ledsrgb if more space needed (will not free ledsrgb!)
void Segment::allocLeds() {
if (!ledsrgb || sizeof(CRGB)*length() > ledsrgbSize) {
USER_PRINTF("allocLeds %d from %d\n", sizeof(CRGB)*length(), ledsrgb?ledsrgbSize:0);
ledsrgb = (CRGB*)malloc(sizeof(CRGB)*length());
ledsrgbSize = ledsrgb?sizeof(CRGB)*length():0;
}
else {
USER_PRINTF("reuse Leds %d from %d\n", sizeof(CRGB)*length(), ledsrgb?ledsrgbSize:0);
}
}
// move constructor
Segment::Segment(Segment &&orig) noexcept {
//DEBUG_PRINTLN(F("-- Move segment constructor --"));
USER_PRINTLN(F("-- Move segment constructor --"));
memcpy((void*)this, (void*)&orig, sizeof(Segment));
orig.name = nullptr;
orig.data = nullptr;
orig._dataLen = 0;
orig._t = nullptr;
orig.leds = nullptr;
orig.ledsrgb = nullptr; //WLEDMM: do not free as moved to here (constructor so there where no leds)
orig.jMap = nullptr; //WLEDMM jMap
}
// copy assignment
Segment& Segment::operator= (const Segment &orig) {
//DEBUG_PRINTLN(F("-- Copying segment --"));
USER_PRINTLN(F("-- Copying segment --"));
if (this != &orig) {
// clean destination
if (name) delete[] name;
if (_t) delete _t;
if (leds && !Segment::_globalLeds) free(leds);
// WLEDMM reuse leds instead of removing themn
// if (ledsrgb && !Segment::_globalLeds) free(ledsrgb); //WLEDMM: nullify below!
CRGB* oldLeds = ledsrgb;
uint16_t oldLedsSize = ledsrgbSize;
deallocateData();
// copy source
memcpy((void*)this, (void*)&orig, sizeof(Segment));
@@ -125,12 +140,12 @@ Segment& Segment::operator= (const Segment &orig) {
data = nullptr;
_dataLen = 0;
_t = nullptr;
if (!Segment::_globalLeds) leds = nullptr;
if (!Segment::_globalLeds) {ledsrgb = oldLeds; ledsrgbSize = oldLedsSize;};// WLEDMM reuse leds instead of ledsrgb = nullptr;
// copy source data
if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); }
if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); }
if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); }
if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); }
if (orig.ledsrgb && !Segment::_globalLeds) { allocLeds(); if (ledsrgb) memcpy(ledsrgb, orig.ledsrgb, sizeof(CRGB)*length()); }
jMap = nullptr; //WLEDMM jMap
}
return *this;
@@ -138,18 +153,18 @@ Segment& Segment::operator= (const Segment &orig) {
// move assignment
Segment& Segment::operator= (Segment &&orig) noexcept {
//DEBUG_PRINTLN(F("-- Moving segment --"));
USER_PRINTLN(F("-- Moving segment --"));
if (this != &orig) {
if (name) delete[] name; // free old name
deallocateData(); // free old runtime data
if (_t) delete _t;
if (leds && !Segment::_globalLeds) free(leds);
if (ledsrgb && !Segment::_globalLeds) free(ledsrgb); //WLEDMM: not needed anymore as we will use leds from copy. no need to nullify ledsrgb as it gets new value in memcpy
memcpy((void*)this, (void*)&orig, sizeof(Segment));
orig.name = nullptr;
orig.data = nullptr;
orig._dataLen = 0;
orig._t = nullptr;
orig.leds = nullptr;
orig.ledsrgb = nullptr; //WLEDMM: do not free as moved to here
orig.jMap = nullptr; //WLEDMM jMap
}
return *this;
@@ -190,7 +205,8 @@ void Segment::deallocateData() {
*/
void Segment::resetIfRequired() {
if (reset) {
if (leds && !Segment::_globalLeds) { free(leds); leds = nullptr; }
//WLEDMM no need to free leds as we will reuse them
// if (ledsrgb && !Segment::_globalLeds) { free(ledsrgb); ledsrgb = nullptr; }
if (transitional && _t) { transitional = false; delete _t; _t = nullptr; }
deallocateData();
next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0;
@@ -202,17 +218,17 @@ void Segment::setUpLeds() {
// deallocation happens in resetIfRequired() as it is called when segment changes or in destructor
if (Segment::_globalLeds)
#ifndef WLED_DISABLE_2D
leds = &Segment::_globalLeds[start + startY*Segment::maxWidth];
ledsrgb = &Segment::_globalLeds[start + startY*Segment::maxWidth];
#else
leds = &Segment::_globalLeds[start];
#endif
else if (!leds) {
#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM)
if (psramFound())
leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // WLEDMM: stupid - PSRAM is too slow for this !!!
else
#endif
leds = (CRGB*)malloc(sizeof(CRGB)*length());
else if ((ledsrgb == nullptr) && (length() > 0)) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it)
//#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM)
//if (psramFound())
// ledsrgb = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards
//else
//#endif
allocLeds(); //WLEDMM
}
}
@@ -891,7 +907,7 @@ void IRAM_ATTR_YN Segment::setPixelColor(int i, uint32_t col) //WLEDMM: IRAM_ATT
}
#endif
if (leds) leds[i] = col;
if (ledsrgb) ledsrgb[i] = col;
uint16_t len = length();
uint8_t _bri_t = currentBri(on ? opacity : 0);
@@ -1017,7 +1033,7 @@ uint32_t Segment::getPixelColor(int i)
}
#endif
if (leds) return RGBW32(leds[i].r, leds[i].g, leds[i].b, 0);
if (ledsrgb) return RGBW32(ledsrgb[i].r, ledsrgb[i].g, ledsrgb[i].b, 0);
if (reverse) i = virtualLength() - i - 1;
i *= groupLength();
@@ -1470,13 +1486,14 @@ void WS2812FX::finalizeInit(void)
}
if (useLedsArray) {
size_t arrSize = sizeof(CRGB) * getLengthTotal();
#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM)
if (psramFound())
Segment::_globalLeds = (CRGB*) ps_malloc(arrSize);
else
#endif
Segment::_globalLeds = (CRGB*) malloc(arrSize);
memset(Segment::_globalLeds, 0, arrSize);
// softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards (see setUpLeds())
//#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM)
//if (psramFound())
// Segment::_globalLeds = (CRGB*) ps_malloc(arrSize);
//else
//#endif
if (arrSize > 0) Segment::_globalLeds = (CRGB*) malloc(arrSize); // WLEDMM avoid malloc(0)
if (Segment::_globalLeds != nullptr) memset(Segment::_globalLeds, 0, arrSize); // WLEDMM avoid dereferencing nullptr
}
//segments are created in makeAutoSegments();
@@ -1850,6 +1867,7 @@ void WS2812FX::restartRuntime() {
}
void WS2812FX::resetSegments(bool boundsOnly) { //WLEDMM add boundsonly
USER_PRINTF("resetSegments %d %dx%d\n", boundsOnly, Segment::maxWidth, Segment::maxHeight);
if (!boundsOnly) {
_segments.clear(); // destructs all Segment as part of clearing
#ifndef WLED_DISABLE_2D
@@ -1861,6 +1879,7 @@ void WS2812FX::resetSegments(bool boundsOnly) { //WLEDMM add boundsonly
_mainSegment = 0;
} else { //WLEDMM boundsonly
for (segment &seg : _segments) {
bool recreateLeds = false;
#ifndef WLED_DISABLE_2D
seg.start = 0;
seg.stop = Segment::maxWidth;
@@ -1870,9 +1889,9 @@ void WS2812FX::resetSegments(bool boundsOnly) { //WLEDMM add boundsonly
seg.start = 0;
seg.stop = _length;
#endif
seg.allocLeds();
}
}
}
void WS2812FX::makeAutoSegments(bool forceReset) {
@@ -2167,9 +2186,9 @@ bool WS2812FX::deserializeMap(uint8_t n) {
#ifdef WLED_DEBUG
DEBUG_PRINTF("Custom ledmap: %d\n", loadedLedmap);
for (uint16_t i=0; i<customMappingSize; i++) {
if (!(i%Segment::maxWidth)) DEBUG_PRINTLN();
DEBUG_PRINTF("%4d,", customMappingTable[i]);
for (uint16_t j=0; j<customMappingSize; j++) { // fixing a minor warning: declaration of 'i' shadows a previous local
if (!(j%Segment::maxWidth)) DEBUG_PRINTLN();
DEBUG_PRINTF("%4d,", customMappingTable[j]);
}
DEBUG_PRINTLN();
#endif

View File

@@ -1082,8 +1082,8 @@ function ddpAll() {
ins.push(output);
start+=node.count;
}
console.log("ins", ins);
callNode("4.3.2.1", "cfg", {"hw":{"led":{"ins":ins}}});
console.log("ins", lastinfo.ip,JSON.stringify({"hw":{"led":{"ins":ins}}}));
callNode(lastinfo.ip, "cfg", {"hw":{"led":{"ins":ins}}});
}
function populateNodes(i,n)
@@ -1103,7 +1103,7 @@ function populateNodes(i,n)
//WLEDMM add this node to nodes
let thisNode = {};
thisNode.name = i.name;
thisNode.ip = locip; //not working for ap node yet...
thisNode.ip = i.ip;
n.nodes.push(thisNode);
n.nodes.sort((a,b) => (a.name).localeCompare(b.name));
@@ -1274,7 +1274,7 @@ function updateLen(s, draw=true) //WLEDMM conditonally draw segment view
gId(`seg${s}len`).innerHTML = out;
// console.log("drawSegmentView","updateLen");
console.log("drawSegmentView","updateLen");
if (draw && isM) drawSegmentView(); //WLEDMM draw new segmentview if something changes in a segment
}
@@ -1491,7 +1491,7 @@ function drawSegmentView() {
}
post();
}, function(parms,error) { //error handling
// console.log("drawledmap error fetching " + fileName +": ", error);
console.log("drawledmap error fetching " + fileName +": ", error);
// downloadGHFile("LM", fileName, true, false); WLEDMM: remove as this has too much impact
post();
});
@@ -1670,8 +1670,8 @@ function makeWS() {
var s = json.state ? json.state : json;
displayRover(i, s);
readState(s);
// console.log("drawSegmentView","websocket", json);
// if (isM) drawSegmentView();
console.log("drawSegmentView","websocket", json);
if (isM) drawSegmentView();
};
ws.onclose = (e)=>{
gId('connind').style.backgroundColor = "var(--c-r)";
@@ -1983,7 +1983,7 @@ function requestJson(command=null)
//WLEDMM init, gfx default on upon web page load
if (isM) {
// console.log("drawSegmentView","requestjson");
drawSegmentView();
// drawSegmentView();
toggleLiveview();
}
@@ -3358,7 +3358,7 @@ function togglePcMode(fromB = false)
sCol('--bh', gId('bot').clientHeight + "px");
_C.style.width = (pcMode)?'100%':'400%';
//WLEDMM resize segmentview
// console.log("drawSegmentView","togglePCMode");
console.log("drawSegmentView","togglePCMode");
if (isM) drawSegmentView();
}

View File

@@ -791,105 +791,105 @@ const uint16_t PAGE_settings_dmx_length = 1612;
const uint8_t PAGE_settings_dmx[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
0xf2, 0x22, 0x09, 0xd8, 0x2b, 0x76, 0x0f, 0xce, 0x42, 0xf1, 0xa3, 0x97, 0xbf, 0x8d, 0x5f, 0xff,
0x79, 0x79, 0x44, 0x0a, 0x53, 0x95, 0x69, 0x6c, 0x3f, 0x49, 0xc9, 0xc4, 0x3c, 0xa1, 0x20, 0x28,
0xae, 0x81, 0xe5, 0x69, 0x5c, 0x81, 0x61, 0x44, 0xb0, 0x0a, 0x12, 0xba, 0xe0, 0xb0, 0xac, 0xa5,
0x32, 0x94, 0x64, 0x52, 0x18, 0x10, 0x26, 0xa1, 0x4b, 0x9e, 0x9b, 0x22, 0x19, 0xf6, 0xfb, 0x34,
0xed, 0xb5, 0xaa, 0xbd, 0x3b, 0xb2, 0x1c, 0x16, 0x3c, 0x83, 0x27, 0x6e, 0x11, 0x70, 0xc1, 0x0d,
0x67, 0xe5, 0x13, 0x9d, 0xb1, 0x12, 0x92, 0x41, 0x50, 0xb1, 0x6b, 0x5e, 0x35, 0xd5, 0x7a, 0xdd,
0x68, 0x50, 0x6e, 0xc1, 0xa6, 0xb8, 0x16, 0x92, 0x92, 0xde, 0x9d, 0xd0, 0x5d, 0x42, 0x59, 0xc1,
0x94, 0x06, 0x0c, 0xd2, 0x98, 0xd9, 0x93, 0x9f, 0x70, 0xd7, 0x70, 0x53, 0x42, 0xfa, 0xf2, 0xfc,
0x0f, 0x32, 0x01, 0x63, 0xb8, 0x98, 0xeb, 0x38, 0x6a, 0xf7, 0x62, 0x9d, 0x29, 0x5e, 0x9b, 0xb4,
0xb7, 0x60, 0x8a, 0x94, 0x32, 0xe3, 0x75, 0x90, 0x27, 0xb9, 0xcc, 0x9a, 0x0a, 0xb3, 0x0c, 0x70,
0x23, 0x79, 0x34, 0xd8, 0x9f, 0x35, 0x22, 0x33, 0x5c, 0x0a, 0x72, 0xe2, 0xf9, 0x1f, 0x97, 0x5c,
0xe4, 0x72, 0x19, 0xca, 0x1a, 0x84, 0x47, 0x0b, 0x63, 0x6a, 0x3d, 0x8a, 0xa2, 0x39, 0x37, 0x45,
0x33, 0x0d, 0x33, 0x59, 0x45, 0x2f, 0xb8, 0xca, 0xa4, 0x94, 0x57, 0x1c, 0xa2, 0xb7, 0x67, 0x47,
0x2f, 0xa3, 0x25, 0xbf, 0xe2, 0x11, 0x86, 0xa6, 0xfe, 0xe7, 0xb5, 0x9f, 0xc3, 0x8d, 0x9f, 0x82,
0x6b, 0x23, 0xd5, 0x4d, 0x38, 0x65, 0xd9, 0x95, 0xb7, 0xa5, 0x72, 0x3c, 0x3e, 0xf1, 0xc0, 0xff,
0x38, 0x93, 0xca, 0xcb, 0xc3, 0x39, 0x98, 0xa3, 0x12, 0x6c, 0x4a, 0x87, 0x37, 0xa7, 0xb9, 0x47,
0xf3, 0xea, 0x1a, 0xcf, 0x28, 0x04, 0x94, 0x9a, 0xfa, 0x21, 0xc7, 0x1f, 0xea, 0xe4, 0xf5, 0xf9,
0xd9, 0x6e, 0x42, 0x69, 0xc0, 0x93, 0xfe, 0x3e, 0x8f, 0x61, 0x9f, 0xef, 0xee, 0xfa, 0xdf, 0x63,
0x19, 0xeb, 0x9a, 0x09, 0xc2, 0xf3, 0x64, 0x7c, 0x42, 0x77, 0x3d, 0xbe, 0x3b, 0xf0, 0x77, 0xa9,
0x26, 0xe9, 0xb8, 0xd5, 0x26, 0xeb, 0xbd, 0x11, 0x89, 0x35, 0x94, 0x90, 0x99, 0xb6, 0xef, 0x1b,
0xed, 0x1d, 0x6b, 0x4c, 0xc7, 0x27, 0x3b, 0xab, 0x35, 0x16, 0x5e, 0xd6, 0xee, 0x30, 0x0b, 0x56,
0x36, 0x90, 0xf4, 0x53, 0xac, 0x3e, 0x31, 0x92, 0xf4, 0xe3, 0xa8, 0x15, 0xdc, 0x51, 0x18, 0xa4,
0xaf, 0x20, 0x7f, 0x40, 0xb6, 0x97, 0x1e, 0x2b, 0x00, 0xf1, 0x80, 0xf4, 0x69, 0x7a, 0x88, 0x5f,
0x0f, 0x08, 0x7f, 0x48, 0xdf, 0x16, 0xdc, 0x3c, 0x24, 0x1d, 0xa6, 0x93, 0xa2, 0x31, 0x06, 0x14,
0xf1, 0x0e, 0x15, 0x9f, 0x17, 0x46, 0x80, 0xd6, 0xfe, 0x03, 0xca, 0xcf, 0x56, 0x47, 0xd8, 0x1b,
0x0e, 0x37, 0x2a, 0x51, 0x5b, 0x10, 0xfb, 0x03, 0x6b, 0x98, 0xc6, 0x53, 0x45, 0xa2, 0xf4, 0x9d,
0xd8, 0xd9, 0x74, 0xb3, 0x3a, 0x67, 0xb5, 0xd7, 0x76, 0x53, 0x34, 0xd5, 0xb8, 0x58, 0x43, 0x2c,
0x9c, 0xcc, 0xc2, 0xf1, 0x45, 0xe8, 0xbc, 0x07, 0x28, 0x3a, 0x66, 0xf5, 0x6d, 0xd9, 0x71, 0x27,
0xab, 0x2d, 0xa4, 0x4f, 0x85, 0x69, 0xed, 0xfd, 0x74, 0x7b, 0x8d, 0x46, 0xfe, 0xc1, 0x97, 0xbd,
0x9e, 0xb3, 0x7a, 0xc9, 0x94, 0x40, 0xb8, 0x63, 0xab, 0xb5, 0xb9, 0x29, 0x21, 0xcc, 0xb9, 0xae,
0x4b, 0x76, 0x93, 0xd0, 0x29, 0x42, 0xfb, 0x8a, 0x8e, 0xbe, 0xcf, 0x48, 0x48, 0x01, 0x2b, 0x80,
0x0d, 0x86, 0x0e, 0x61, 0x3c, 0x4d, 0x5c, 0x42, 0x07, 0xf7, 0xa0, 0x74, 0x1b, 0x48, 0x6b, 0x67,
0xb2, 0x66, 0x19, 0x37, 0xe8, 0xac, 0x1f, 0x0e, 0x69, 0xf0, 0x15, 0x23, 0xdf, 0xc6, 0xb5, 0x37,
0x3d, 0x4f, 0x1e, 0xf5, 0xfd, 0xd1, 0x77, 0xfb, 0x1f, 0x7c, 0xb3, 0xf7, 0xc1, 0xd6, 0xb5, 0x2b,
0x25, 0xcb, 0x7f, 0x9d, 0x78, 0x10, 0x18, 0x1b, 0xf5, 0x63, 0x89, 0xdd, 0x96, 0x49, 0x1e, 0x66,
0x0a, 0x98, 0x81, 0xce, 0x95, 0x47, 0x5b, 0xd2, 0xa0, 0xfe, 0xbe, 0x0c, 0x91, 0x67, 0x5e, 0x18,
0xa3, 0xf8, 0xb4, 0x31, 0x80, 0x02, 0x95, 0xd1, 0x00, 0xfc, 0xe0, 0xee, 0xbe, 0xb9, 0xa9, 0xb1,
0x72, 0xd4, 0xc0, 0xb5, 0x89, 0xde, 0xb3, 0x05, 0x5b, 0x39, 0xf8, 0x42, 0x91, 0xe9, 0x1b, 0x81,
0x2e, 0x8c, 0x8f, 0xc9, 0x4f, 0x65, 0x7e, 0x13, 0xb2, 0x1a, 0x89, 0x26, 0x1f, 0x17, 0xbc, 0xcc,
0x3d, 0x69, 0xf5, 0x59, 0x9e, 0x1f, 0x2d, 0x30, 0x8b, 0x33, 0x24, 0x0e, 0xc0, 0xeb, 0xeb, 0x51,
0x9b, 0x33, 0x0d, 0x3c, 0x3f, 0x49, 0x3f, 0x5a, 0xd6, 0x18, 0x0c, 0xfd, 0xe0, 0x18, 0xcc, 0xef,
0x9e, 0x1f, 0xb4, 0xb0, 0xfb, 0x7c, 0xbf, 0x19, 0x28, 0x25, 0x15, 0x66, 0x8b, 0x66, 0xc8, 0xca,
0x5a, 0x62, 0xf1, 0x4a, 0x39, 0xf7, 0xe8, 0x91, 0xdd, 0x27, 0x5d, 0x2d, 0x10, 0x07, 0x64, 0xc6,
0x4b, 0x70, 0xa7, 0x42, 0x1a, 0x56, 0x78, 0xfa, 0xb3, 0x6e, 0x5f, 0xce, 0x2c, 0xd5, 0xcf, 0xf8,
0xbc, 0x51, 0xcc, 0x15, 0xaf, 0x3d, 0x15, 0x99, 0x31, 0x34, 0xc8, 0xc3, 0x77, 0xe2, 0x54, 0x20,
0x21, 0xd6, 0x58, 0x43, 0x20, 0x35, 0x9b, 0x03, 0xc9, 0x99, 0x61, 0x8f, 0x90, 0x07, 0xb7, 0xea,
0x3d, 0xc1, 0x5b, 0x41, 0x6d, 0x80, 0x11, 0x4d, 0x92, 0x8e, 0x12, 0x11, 0x9a, 0xce, 0x5f, 0x58,
0x2b, 0x69, 0x64, 0x26, 0xcb, 0xc7, 0x8f, 0x3d, 0xc7, 0xc4, 0xfd, 0xc0, 0x73, 0x14, 0x9d, 0x58,
0x8d, 0x72, 0x82, 0xbc, 0x89, 0x5e, 0x6d, 0x8f, 0x4f, 0x0d, 0x54, 0xb6, 0x0e, 0xd9, 0x69, 0x4d,
0x7d, 0xff, 0xd3, 0xa7, 0x4e, 0x0d, 0xed, 0xab, 0x1a, 0x13, 0xfe, 0x05, 0xfd, 0x93, 0x73, 0x99,
0x43, 0x48, 0x2e, 0x4b, 0x60, 0x1a, 0x08, 0x16, 0x02, 0x2f, 0xbc, 0xe5, 0x67, 0x72, 0x7a, 0x89,
0x29, 0x05, 0xb7, 0x3c, 0xea, 0xdb, 0x1e, 0x03, 0xe7, 0xcd, 0xf7, 0xad, 0x96, 0x43, 0x87, 0x75,
0x7f, 0xe0, 0xb8, 0x1f, 0xa9, 0x9f, 0xee, 0x3a, 0xf1, 0x88, 0x52, 0xc4, 0x21, 0x32, 0x41, 0x3b,
0x5f, 0x22, 0x1d, 0xbe, 0xd7, 0x07, 0x75, 0xf2, 0x23, 0x0d, 0x2c, 0xbe, 0x7a, 0x48, 0x0d, 0xed,
0xa0, 0x89, 0x1d, 0x4c, 0xd3, 0x9f, 0x79, 0x65, 0x27, 0x16, 0x69, 0x54, 0x89, 0xa8, 0x71, 0xc8,
0xcd, 0x34, 0xa2, 0x78, 0x1f, 0x15, 0x9d, 0x42, 0x1c, 0xb5, 0x13, 0xd6, 0x82, 0x00, 0x9b, 0x61,
0x23, 0x27, 0x14, 0xab, 0x85, 0xa4, 0x8a, 0x2c, 0x52, 0xf5, 0x1c, 0xd9, 0xda, 0x5f, 0xff, 0x68,
0xda, 0x4d, 0xe0, 0xc9, 0x8c, 0x12, 0x9c, 0x7f, 0x85, 0x44, 0x49, 0x2d, 0xb5, 0x1d, 0x87, 0x39,
0x5f, 0x90, 0xac, 0x64, 0x5a, 0x27, 0xd4, 0x48, 0x2c, 0xc7, 0xf2, 0xf6, 0x5e, 0x01, 0x65, 0x7d,
0x68, 0x87, 0x33, 0x82, 0xcf, 0x60, 0x37, 0x2c, 0x4c, 0x91, 0x1b, 0xdc, 0x82, 0x62, 0xd4, 0xac,
0xe4, 0xd9, 0x55, 0x42, 0x4f, 0x6c, 0xd8, 0x83, 0x38, 0x6a, 0x05, 0x98, 0x1a, 0xba, 0x48, 0xef,
0xb7, 0xe9, 0xad, 0x8d, 0x0e, 0xad, 0xd1, 0x21, 0x4e, 0xb5, 0x8d, 0xdd, 0x2d, 0x0b, 0xdd, 0x4c,
0x2b, 0x8e, 0x39, 0x4e, 0xd8, 0x02, 0x36, 0x2a, 0x85, 0x5a, 0xb9, 0x2f, 0xf6, 0xd2, 0xde, 0x69,
0x55, 0x31, 0x84, 0x9f, 0xe2, 0xc8, 0xa0, 0x0c, 0x5f, 0x1f, 0x1f, 0x2c, 0x4b, 0xf3, 0x19, 0xe1,
0x86, 0x14, 0x4c, 0x13, 0x3b, 0xd0, 0x75, 0x53, 0xdb, 0x42, 0x22, 0x61, 0xa3, 0xc1, 0xa5, 0x92,
0xd7, 0x37, 0xe4, 0x8d, 0xe0, 0x0b, 0x40, 0x76, 0x24, 0x31, 0x17, 0x75, 0xd3, 0xcd, 0x29, 0x7a,
0xf9, 0x06, 0xb3, 0x6b, 0x43, 0x23, 0x63, 0x4d, 0x41, 0x61, 0xb1, 0xb8, 0x40, 0x1e, 0xc2, 0x6f,
0x76, 0x9d, 0xd0, 0x67, 0x4f, 0x9f, 0x3f, 0x7f, 0x4e, 0x89, 0x82, 0x7f, 0x1b, 0xae, 0x20, 0x4f,
0xc9, 0x0c, 0xd1, 0x43, 0x8e, 0x06, 0xe1, 0xd3, 0x81, 0x25, 0x7c, 0x1b, 0xcb, 0xeb, 0x27, 0x2b,
0xd6, 0xf0, 0x91, 0xe4, 0xb1, 0x6e, 0x3c, 0x7d, 0x8d, 0x03, 0x9c, 0x2c, 0x79, 0x59, 0x92, 0x4e,
0x44, 0x4c, 0x01, 0xc4, 0x02, 0xcb, 0xa2, 0x9d, 0xc8, 0xc6, 0xd8, 0x14, 0x3a, 0x07, 0xeb, 0xeb,
0x62, 0xf5, 0xa6, 0x50, 0xca, 0x65, 0x1c, 0x71, 0x3b, 0x2f, 0xd2, 0x95, 0xbb, 0x0b, 0x97, 0x9a,
0xbd, 0x5a, 0x33, 0x7e, 0x6d, 0x1a, 0x05, 0x9a, 0xa0, 0x7f, 0xc3, 0xae, 0x40, 0xb4, 0x09, 0x59,
0xcf, 0xad, 0x1b, 0x77, 0xa7, 0x56, 0xf6, 0xbd, 0x6e, 0x4e, 0x6b, 0x52, 0xa3, 0x79, 0x67, 0x4b,
0x90, 0x0b, 0xec, 0xe1, 0xfc, 0xd1, 0xaa, 0x14, 0xf7, 0x9c, 0x7f, 0xd0, 0x9d, 0x7f, 0x30, 0x5c,
0xe1, 0x68, 0x7c, 0x81, 0x95, 0xc2, 0xbd, 0x12, 0xc4, 0x1c, 0xdf, 0x68, 0x74, 0xcf, 0x41, 0x01,
0xfd, 0xcf, 0x51, 0xd8, 0x52, 0x0a, 0x75, 0x41, 0x27, 0x86, 0x21, 0x84, 0xbb, 0xf7, 0xc4, 0xff,
0xc4, 0xe8, 0xb9, 0x20, 0xc3, 0xc1, 0xde, 0x3a, 0xca, 0xc4, 0x05, 0xde, 0x04, 0x69, 0x5d, 0x5a,
0xfa, 0x46, 0x6e, 0x99, 0x82, 0x59, 0xe2, 0xb8, 0x27, 0x7a, 0x3b, 0x84, 0x5e, 0xc7, 0xe8, 0x7d,
0xe5, 0x20, 0xdb, 0x31, 0x8e, 0xef, 0xc4, 0xb8, 0xe7, 0x20, 0xe4, 0x2f, 0x12, 0xe3, 0xc3, 0xb4,
0x50, 0x30, 0x4b, 0xe8, 0x86, 0x9b, 0x47, 0x2d, 0xd9, 0xed, 0x20, 0xda, 0x74, 0x3b, 0xf2, 0x07,
0xfd, 0xc0, 0x62, 0x51, 0x9b, 0x75, 0x79, 0x5d, 0xdb, 0xdb, 0x0c, 0x99, 0xb1, 0xf2, 0x77, 0x42,
0x03, 0x36, 0x27, 0xbf, 0x23, 0xd9, 0xeb, 0x13, 0x30, 0x19, 0x12, 0xe2, 0x2b, 0x98, 0x33, 0x95,
0x97, 0xf8, 0xc0, 0xb0, 0x1d, 0xb6, 0x40, 0xe9, 0x4e, 0x86, 0x2d, 0x6d, 0x70, 0xe0, 0xbf, 0x13,
0xe7, 0xd8, 0x69, 0x8d, 0xb7, 0xb8, 0x92, 0x8a, 0x7f, 0xb0, 0x85, 0x58, 0x29, 0xb4, 0x47, 0xd5,
0xb7, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0xb9,
0xbc, 0x48, 0x02, 0xf6, 0x8a, 0xdd, 0x83, 0xb3, 0x50, 0xfc, 0xe8, 0xc5, 0xef, 0xe3, 0x57, 0x7f,
0x5d, 0x1e, 0x91, 0xc2, 0x54, 0x65, 0x1a, 0xdb, 0x4f, 0x52, 0x32, 0x31, 0x4f, 0x28, 0x08, 0x8a,
0x6b, 0x60, 0x79, 0x1a, 0x57, 0x60, 0x18, 0x11, 0xac, 0x82, 0x84, 0x2e, 0x38, 0x2c, 0x6b, 0xa9,
0x0c, 0x25, 0x99, 0x14, 0x06, 0x84, 0x49, 0xe8, 0x92, 0xe7, 0xa6, 0x48, 0x86, 0xfd, 0x3e, 0x4d,
0x7b, 0xad, 0x6a, 0xef, 0x8e, 0x2c, 0x87, 0x05, 0xcf, 0xe0, 0x89, 0x5b, 0x04, 0x5c, 0x70, 0xc3,
0x59, 0xf9, 0x44, 0x67, 0xac, 0x84, 0x64, 0x10, 0x54, 0xec, 0x9a, 0x57, 0x4d, 0xb5, 0x5e, 0x37,
0x1a, 0x94, 0x5b, 0xb0, 0x29, 0xae, 0x85, 0xa4, 0xa4, 0x77, 0x27, 0x74, 0x97, 0x50, 0x56, 0x30,
0xa5, 0x01, 0x83, 0x34, 0x66, 0xf6, 0xe4, 0x27, 0xdc, 0x35, 0xdc, 0x94, 0x90, 0xbe, 0x38, 0xff,
0x93, 0x4c, 0xc0, 0x18, 0x2e, 0xe6, 0x3a, 0x8e, 0xda, 0xbd, 0x58, 0x67, 0x8a, 0xd7, 0x26, 0xed,
0x2d, 0x98, 0x22, 0xa5, 0xcc, 0x78, 0x1d, 0xe4, 0x49, 0x2e, 0xb3, 0xa6, 0xc2, 0x2c, 0x03, 0xdc,
0x48, 0x1e, 0x0d, 0xf6, 0x67, 0x8d, 0xc8, 0x0c, 0x97, 0x82, 0x9c, 0x78, 0xfe, 0x87, 0x25, 0x17,
0xb9, 0x5c, 0x86, 0xb2, 0x06, 0xe1, 0xd1, 0xc2, 0x98, 0x5a, 0x8f, 0xa2, 0x68, 0xce, 0x4d, 0xd1,
0x4c, 0xc3, 0x4c, 0x56, 0xd1, 0xb9, 0x94, 0xe2, 0x5c, 0xe6, 0x4d, 0x09, 0x3a, 0x7a, 0x73, 0x76,
0xf4, 0x22, 0x5a, 0xf2, 0x2b, 0x1e, 0x61, 0x6c, 0xea, 0x7f, 0x5a, 0x3b, 0x3a, 0xdc, 0x38, 0x2a,
0xb8, 0x36, 0x52, 0xdd, 0x84, 0x53, 0x96, 0x5d, 0x79, 0x5b, 0x2a, 0xc7, 0xe3, 0x13, 0x0f, 0xfc,
0x0f, 0x33, 0xa9, 0xbc, 0x3c, 0x9c, 0x83, 0x39, 0x2a, 0xc1, 0xe6, 0x74, 0x78, 0x73, 0x9a, 0x7b,
0x34, 0xaf, 0xae, 0xf1, 0x90, 0x42, 0x40, 0xa9, 0xa9, 0x1f, 0x72, 0xfc, 0xa1, 0x4e, 0x5e, 0x9d,
0x9f, 0xed, 0x26, 0x94, 0x06, 0x3c, 0xe9, 0xef, 0xf3, 0x18, 0xf6, 0xf9, 0xee, 0xae, 0xff, 0x3d,
0x96, 0xb1, 0xae, 0x99, 0x20, 0x3c, 0x4f, 0xc6, 0x27, 0x74, 0xd7, 0xe3, 0xbb, 0x03, 0x7f, 0x97,
0x6a, 0x92, 0x8e, 0x5b, 0x6d, 0xb2, 0xde, 0x1b, 0x91, 0x58, 0x43, 0x09, 0x99, 0x69, 0x1b, 0xbf,
0xd1, 0xde, 0xb1, 0xc6, 0x74, 0x7c, 0xb2, 0xb3, 0x5a, 0x63, 0xe5, 0x65, 0xed, 0x0e, 0xb3, 0x60,
0x65, 0x03, 0x49, 0x3f, 0xc5, 0xf2, 0x13, 0x23, 0x49, 0x3f, 0x8e, 0x5a, 0xc1, 0x1d, 0x85, 0x41,
0xfa, 0x12, 0xf2, 0x07, 0x64, 0x7b, 0xe9, 0xb1, 0x02, 0x10, 0x0f, 0x48, 0x9f, 0xa6, 0x87, 0xf8,
0xf5, 0x80, 0xf0, 0x87, 0xf4, 0x4d, 0xc1, 0xcd, 0x43, 0xd2, 0x61, 0x3a, 0x29, 0x1a, 0x63, 0x40,
0x11, 0xef, 0x50, 0xf1, 0x79, 0x61, 0x04, 0x68, 0xed, 0x3f, 0xa0, 0xfc, 0x6c, 0x75, 0x84, 0xbd,
0xe1, 0x70, 0xa3, 0x12, 0xb5, 0x05, 0xb1, 0x3f, 0xb0, 0x86, 0x69, 0x3c, 0x55, 0x24, 0x4a, 0xdf,
0x8a, 0x9d, 0x4d, 0x37, 0xab, 0x73, 0x56, 0x7b, 0x6d, 0x37, 0x45, 0x53, 0x8d, 0x8b, 0x35, 0xc6,
0xc2, 0xc9, 0x2c, 0x1c, 0x5f, 0x84, 0xce, 0x7b, 0x80, 0xa2, 0x63, 0x56, 0xdf, 0x96, 0x1d, 0x77,
0xb2, 0xda, 0x62, 0xfa, 0x54, 0x98, 0xd6, 0xde, 0x4f, 0xb7, 0xd7, 0x68, 0xe4, 0x1f, 0x7c, 0xde,
0xeb, 0x39, 0xab, 0x97, 0x4c, 0x09, 0xc4, 0x3b, 0xb6, 0x5a, 0x9b, 0x9b, 0x12, 0xc2, 0x9c, 0xeb,
0xba, 0x64, 0x37, 0x09, 0x9d, 0x22, 0xb6, 0xaf, 0xe8, 0xe8, 0xfb, 0x8c, 0x84, 0x14, 0xb0, 0x02,
0xd8, 0x60, 0xe8, 0x10, 0xc6, 0xd3, 0xc4, 0x25, 0x74, 0x70, 0x0f, 0x4a, 0xb7, 0x81, 0xb4, 0x76,
0x26, 0x6b, 0x96, 0x71, 0x83, 0xce, 0xfa, 0xe1, 0x90, 0x06, 0x5f, 0x30, 0xf2, 0x6d, 0x5c, 0x7b,
0xd5, 0xf3, 0xe4, 0x51, 0xdf, 0x1f, 0x7d, 0xb7, 0xff, 0xc1, 0x37, 0x7b, 0x1f, 0x6c, 0x5d, 0xbb,
0x52, 0xb2, 0xfc, 0xb7, 0x89, 0x07, 0x81, 0xb1, 0x51, 0x3f, 0x94, 0xd8, 0x6d, 0x99, 0xe4, 0x61,
0xa6, 0x80, 0x19, 0xe8, 0x5c, 0x79, 0xb4, 0x65, 0x0d, 0xea, 0xef, 0xcb, 0x10, 0x89, 0xe6, 0x17,
0x63, 0x14, 0x9f, 0x36, 0x06, 0x50, 0xa0, 0x32, 0x1a, 0x80, 0x1f, 0xdc, 0xdd, 0x37, 0x37, 0x35,
0x56, 0x8e, 0x1a, 0xb8, 0x36, 0xd1, 0x3b, 0xb6, 0x60, 0x2b, 0x07, 0x9f, 0x29, 0x32, 0x7d, 0x23,
0xd0, 0x85, 0xf1, 0x31, 0xf9, 0xa9, 0xcc, 0x6f, 0x42, 0x56, 0x23, 0xd3, 0xe4, 0xe3, 0x82, 0x97,
0xb9, 0x27, 0xad, 0x3e, 0xcb, 0xf3, 0xa3, 0x05, 0x66, 0x71, 0x86, 0xc4, 0x01, 0x78, 0x7d, 0x3d,
0x6a, 0x73, 0xa6, 0x81, 0xe7, 0x27, 0xe9, 0x07, 0xcb, 0x1a, 0x83, 0xa1, 0x1f, 0x1c, 0x83, 0xf9,
0xc3, 0xf3, 0x83, 0x16, 0x76, 0x9f, 0xee, 0x37, 0x03, 0xa5, 0xa4, 0xc2, 0x6c, 0xd1, 0x0c, 0x69,
0x59, 0x4b, 0x2c, 0x5e, 0x29, 0xe7, 0x1e, 0x3d, 0xb2, 0xfb, 0xa4, 0xab, 0x05, 0xe2, 0x80, 0xcc,
0x78, 0x09, 0xee, 0x54, 0xc8, 0xc3, 0x0a, 0x4f, 0x7f, 0xd6, 0xed, 0xcb, 0x99, 0xe5, 0xfa, 0x19,
0x9f, 0x37, 0x8a, 0xb9, 0xe2, 0xb5, 0xa7, 0x22, 0x33, 0x86, 0x06, 0x79, 0xf8, 0x56, 0x9c, 0x0a,
0x64, 0xc4, 0x1a, 0x6b, 0x08, 0xa4, 0x66, 0x73, 0x20, 0x39, 0x33, 0xec, 0x11, 0xf2, 0xe0, 0x56,
0xbd, 0x27, 0x78, 0x2b, 0xa8, 0x0d, 0x30, 0xa2, 0x49, 0xd2, 0x51, 0x22, 0x42, 0xd3, 0xf9, 0x0b,
0x6b, 0x25, 0x8d, 0xcc, 0x64, 0xf9, 0xf8, 0xb1, 0xe7, 0xa8, 0xb8, 0x1f, 0x78, 0x8e, 0xa3, 0x13,
0xab, 0x51, 0x4e, 0x90, 0x37, 0xd1, 0xab, 0xed, 0xf1, 0xa9, 0x81, 0xca, 0xd6, 0x21, 0x3b, 0xad,
0xa9, 0xef, 0x7f, 0xfc, 0xd8, 0xa9, 0xa1, 0x7d, 0x55, 0x63, 0xc2, 0xbf, 0xa2, 0x7f, 0x82, 0xa4,
0x0c, 0x21, 0xb9, 0x2c, 0x81, 0x69, 0x20, 0x58, 0x08, 0xbc, 0xf0, 0x96, 0x9f, 0xc9, 0xe9, 0x25,
0xa6, 0x14, 0xdc, 0xf2, 0xa8, 0x6f, 0x7b, 0x0c, 0x9c, 0x37, 0xdf, 0xb7, 0x5a, 0x0e, 0x1d, 0xd6,
0xfd, 0x81, 0x23, 0x7f, 0xe4, 0x7e, 0xba, 0xeb, 0xc4, 0x23, 0x4a, 0x11, 0x87, 0xc8, 0x04, 0xed,
0x80, 0x89, 0x74, 0xf8, 0x4e, 0x1f, 0xd4, 0xc9, 0x8f, 0x34, 0xb0, 0xf8, 0xea, 0x21, 0x35, 0xb4,
0x93, 0x26, 0x76, 0x30, 0x4d, 0x7f, 0xe6, 0x95, 0x1d, 0x59, 0xa4, 0x51, 0x25, 0xa2, 0xc6, 0x21,
0x37, 0xd3, 0x88, 0xe2, 0x7d, 0x54, 0x74, 0x0a, 0x71, 0xd4, 0x8e, 0x58, 0x0b, 0x02, 0x6c, 0x86,
0x8d, 0x9c, 0x50, 0xac, 0x16, 0x92, 0x2a, 0xb2, 0x48, 0xd5, 0x73, 0x64, 0x6b, 0x7f, 0xfd, 0xab,
0x69, 0x37, 0x82, 0x27, 0x33, 0x4a, 0x70, 0x00, 0x16, 0x12, 0x25, 0xb5, 0xd4, 0x76, 0x1e, 0xe6,
0x7c, 0x41, 0xb2, 0x92, 0x69, 0x9d, 0x50, 0x23, 0xb1, 0x1c, 0xcb, 0xdb, 0x7b, 0x05, 0x94, 0xf5,
0xa1, 0x9d, 0xce, 0x08, 0x3e, 0x83, 0xdd, 0xb0, 0x30, 0x45, 0x6e, 0x70, 0x0b, 0x8a, 0x51, 0xb3,
0x92, 0x67, 0x57, 0x09, 0x3d, 0xb1, 0x61, 0x0f, 0xe2, 0xa8, 0x15, 0x60, 0x6a, 0xe8, 0x22, 0xbd,
0xdf, 0xa6, 0xb7, 0x36, 0x3a, 0xb4, 0x46, 0x87, 0x38, 0xd5, 0x36, 0x76, 0xb7, 0x2c, 0x74, 0x33,
0xad, 0x38, 0xe6, 0x38, 0x61, 0x0b, 0xd8, 0xa8, 0x14, 0x6a, 0xe5, 0xbe, 0xd8, 0x4b, 0x7b, 0xa7,
0x55, 0xc5, 0x10, 0x7e, 0x8a, 0x23, 0x83, 0x32, 0x7c, 0x7e, 0xbc, 0xb7, 0x2c, 0xcd, 0x67, 0x84,
0x1b, 0x52, 0x30, 0x4d, 0xec, 0x44, 0xd7, 0x4d, 0x6d, 0x0b, 0x89, 0x84, 0x8d, 0x06, 0x97, 0x4a,
0x5e, 0xdf, 0x90, 0xd7, 0x82, 0x2f, 0x00, 0xd9, 0x91, 0xc4, 0x5c, 0xd4, 0x4d, 0x37, 0xa7, 0xe8,
0xe5, 0x6b, 0xcc, 0xae, 0x0d, 0x8d, 0x8c, 0x35, 0x05, 0x85, 0xc5, 0xe2, 0x02, 0x79, 0x08, 0xbf,
0xd9, 0x75, 0x42, 0x9f, 0x3d, 0x7d, 0xfe, 0xfc, 0x39, 0x25, 0x0a, 0xfe, 0x6b, 0xb8, 0x82, 0x3c,
0x25, 0x33, 0x44, 0x0f, 0x39, 0x1a, 0x84, 0x4f, 0x07, 0x96, 0xf0, 0x6d, 0x2c, 0xaf, 0x9f, 0xac,
0x58, 0xc3, 0x47, 0x92, 0xc7, 0xba, 0xf1, 0xf4, 0x15, 0x0e, 0x70, 0xb2, 0xe4, 0x65, 0x49, 0x3a,
0x11, 0x31, 0x05, 0x10, 0x0b, 0x2c, 0x8b, 0x76, 0x22, 0x1b, 0x63, 0x53, 0xe8, 0x1c, 0xac, 0xaf,
0x8b, 0xd5, 0x9b, 0x42, 0x29, 0x97, 0x71, 0xc4, 0xed, 0xbc, 0x48, 0x57, 0xee, 0x2e, 0x5c, 0x6a,
0xf6, 0x6a, 0xcd, 0xf8, 0xb5, 0x69, 0x14, 0x68, 0x82, 0xfe, 0x0d, 0xbb, 0x02, 0xd1, 0x26, 0x64,
0x3d, 0xb7, 0x6e, 0xdc, 0x9d, 0x5a, 0xd9, 0xf7, 0xba, 0x39, 0xad, 0x49, 0x8d, 0xe6, 0x9d, 0x2d,
0x41, 0x2e, 0xb0, 0x87, 0xf3, 0x47, 0xab, 0x52, 0xdc, 0x73, 0xfe, 0x41, 0x77, 0xfe, 0xc1, 0x70,
0x85, 0xa3, 0xf1, 0x05, 0x56, 0x0a, 0xf7, 0x4a, 0x10, 0x73, 0x7c, 0xa4, 0xd1, 0x3d, 0x07, 0x05,
0xf4, 0x3f, 0x47, 0x61, 0x4b, 0x29, 0xd4, 0x05, 0x9d, 0x18, 0x86, 0x10, 0xee, 0xde, 0x13, 0x5f,
0x89, 0xd1, 0x73, 0x41, 0x86, 0x83, 0xbd, 0x75, 0x94, 0x89, 0x0b, 0xbc, 0x09, 0xd2, 0xba, 0xb4,
0xf4, 0x8d, 0xdc, 0x32, 0x05, 0xb3, 0xc4, 0x71, 0x4f, 0xf4, 0x76, 0x08, 0xbd, 0x8e, 0xd1, 0xfb,
0xc2, 0x41, 0xb6, 0x63, 0x1c, 0xdf, 0x89, 0x71, 0xcf, 0x41, 0xc8, 0xdf, 0x24, 0xc6, 0x97, 0x69,
0xa1, 0x60, 0x96, 0xd0, 0x0d, 0x37, 0x8f, 0x5a, 0xb2, 0xdb, 0x41, 0xb4, 0xe9, 0x76, 0xe4, 0x0f,
0xfa, 0x81, 0xc5, 0xa2, 0x36, 0xeb, 0xf2, 0xba, 0xb6, 0xb7, 0x19, 0x32, 0x63, 0xe5, 0x6f, 0x85,
0x06, 0x6c, 0x4e, 0x7e, 0x47, 0xb2, 0xd7, 0x27, 0x60, 0x32, 0x24, 0xc4, 0x97, 0x30, 0x67, 0x2a,
0xc7, 0xa7, 0xa1, 0xb6, 0x1d, 0xb6, 0x40, 0xe9, 0x4e, 0x86, 0x2d, 0x6d, 0x70, 0xe0, 0xbf, 0x15,
0xe7, 0xd8, 0x69, 0x8d, 0xb7, 0xb8, 0x92, 0x8a, 0xbf, 0xb7, 0x85, 0x58, 0x29, 0xb4, 0x47, 0xd5,
0x04, 0xe9, 0x8b, 0x83, 0x0a, 0x77, 0xfc, 0x7d, 0xbc, 0xb7, 0x5c, 0xcc, 0x64, 0x1c, 0xb1, 0x94,
0xfc, 0xed, 0x30, 0x64, 0x6f, 0xb6, 0xa5, 0x85, 0xad, 0x19, 0x4e, 0x1c, 0x9b, 0x24, 0x14, 0x59,
0x54, 0xaa, 0x11, 0xd2, 0x1b, 0x9e, 0x7d, 0xbf, 0x1b, 0xe8, 0x23, 0x37, 0xcf, 0xd3, 0xde, 0xdb,
0x17, 0xaf, 0x2e, 0x4e, 0x2f, 0x8e, 0x47, 0x64, 0xf5, 0xd6, 0x43, 0x7b, 0x8b, 0x3a, 0x84, 0x27,
0x62, 0xc9, 0xe0, 0xe6, 0xba, 0x01, 0xdb, 0xe8, 0x0a, 0x1d, 0xee, 0x36, 0xf8, 0xcf, 0x18, 0x3e,
0xd0, 0x89, 0xc4, 0xab, 0x57, 0xb2, 0x3a, 0xfc, 0x26, 0x92, 0xd8, 0x59, 0x53, 0x7d, 0x5b, 0xfe,
0x08, 0x9f, 0xa7, 0x15, 0xab, 0xe9, 0x8e, 0x7b, 0xab, 0x63, 0x83, 0xb6, 0xb8, 0x43, 0xb9, 0xbd,
0xf5, 0xad, 0x68, 0x8b, 0x8b, 0xb7, 0x61, 0x44, 0x7a, 0x0f, 0x03, 0xaf, 0xbf, 0x06, 0x37, 0xfe,
0x09, 0x59, 0xd1, 0xe4, 0x99, 0xfd, 0xfb, 0xf2, 0x74, 0xfd, 0xb2, 0x5d, 0xcd, 0x22, 0xfc, 0x4f,
0x80, 0xbb, 0xb6, 0x88, 0x2d, 0xb9, 0x6e, 0x3f, 0x95, 0xd7, 0xa4, 0xa4, 0xd2, 0xff, 0xe1, 0xca,
0x2f, 0x69, 0xaf, 0xf7, 0x2d, 0xbc, 0x17, 0x59, 0x2a, 0xc7, 0x2f, 0x4b, 0xf7, 0x96, 0xfb, 0xed,
0x7f, 0xae, 0xff, 0x00, 0x37, 0x61, 0x9f, 0x05, 0x83, 0x0d, 0x00, 0x00
0xfc, 0xe3, 0x30, 0x64, 0x6f, 0xb6, 0xa5, 0x85, 0xad, 0x19, 0x4e, 0x1c, 0x9b, 0x24, 0x14, 0x59,
0x54, 0xaa, 0x11, 0xd2, 0x1b, 0x9e, 0x7d, 0xbf, 0x1b, 0xe8, 0x23, 0x37, 0xcf, 0xd3, 0xde, 0x9b,
0x5f, 0x5e, 0x5e, 0x9c, 0x5e, 0x1c, 0x8f, 0xc8, 0xea, 0xad, 0x87, 0xf6, 0x16, 0x75, 0x08, 0x4f,
0xc4, 0x92, 0xc1, 0xcd, 0x75, 0x03, 0xb6, 0xd1, 0x15, 0x3a, 0xdc, 0x6d, 0xf0, 0x9f, 0x31, 0x7c,
0xa1, 0x13, 0x89, 0x57, 0xaf, 0x64, 0x75, 0xf8, 0x4d, 0x24, 0xb1, 0xb3, 0xa6, 0xfa, 0xb6, 0xfc,
0x11, 0x3e, 0x4f, 0x2b, 0x56, 0xd3, 0x1d, 0xf7, 0x58, 0xc7, 0x06, 0x6d, 0x71, 0x87, 0x72, 0x7b,
0xeb, 0x5b, 0xd1, 0x16, 0x17, 0x6f, 0xc3, 0x88, 0xf4, 0x1e, 0x06, 0x5e, 0x7f, 0x0d, 0x6e, 0xfc,
0x17, 0xb2, 0xa2, 0xc9, 0x33, 0xfb, 0xff, 0xe5, 0xe9, 0xfa, 0x65, 0xbb, 0x9a, 0x45, 0xf8, 0xa7,
0x00, 0x77, 0x6d, 0x11, 0x5b, 0x72, 0xdd, 0x7e, 0x2a, 0xaf, 0x49, 0x49, 0xa5, 0x5f, 0xe1, 0xca,
0xcf, 0x69, 0xaf, 0xf7, 0x2d, 0xbc, 0x17, 0x59, 0x2a, 0xc7, 0x2f, 0x4b, 0xf7, 0x96, 0xfb, 0xed,
0x9f, 0xae, 0xff, 0x01, 0x5b, 0x6b, 0xf3, 0x68, 0x84, 0x0d, 0x00, 0x00
};
@@ -1553,373 +1553,372 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
const uint16_t PAGE_settings_sec_length = 2500;
const uint16_t PAGE_settings_sec_length = 2490;
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, 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, 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, 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, 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, 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, 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, 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, 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,
0xfd, 0x06, 0x70, 0x5d, 0xb4, 0xef, 0x81, 0x3e, 0x0e, 0xce, 0xd5, 0xa2, 0x36, 0xc2, 0xa3, 0xdd,
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, 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, 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, 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, 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,
0x6c, 0x50, 0xe7, 0x29, 0x9b, 0x49, 0x9a, 0xa3, 0xcb, 0x05, 0xc4, 0x78, 0x2c, 0xa1, 0x0e, 0x93,
0x61, 0xab, 0x3c, 0x8d, 0xe8, 0xd8, 0x68, 0x36, 0xee, 0x9d, 0x2a, 0xdb, 0x59, 0xd3, 0xec, 0x2b,
0xb5, 0x43, 0x06, 0x10, 0xc8, 0x21, 0xd3, 0x50, 0x69, 0x56, 0x0a, 0x78, 0x8b, 0x92, 0x21, 0x4d,
0x90, 0xff, 0xb0, 0x23, 0xc1, 0x83, 0x91, 0x73, 0x14, 0x5d, 0xc6, 0x9a, 0x0b, 0xc0, 0x06, 0x4d,
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, 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, 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, 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, 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, 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, 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, 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
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x58, 0xff, 0x72, 0xdb, 0x36,
0x12, 0xfe, 0x5f, 0x4f, 0x01, 0xa1, 0x33, 0xa9, 0x78, 0xa5, 0x29, 0xdb, 0x49, 0x3a, 0xa9, 0x23,
0x2a, 0x67, 0xc7, 0x4e, 0xe3, 0x8e, 0x1d, 0x7b, 0x22, 0xa5, 0xb9, 0x9b, 0x5e, 0x27, 0x03, 0x91,
0x90, 0x88, 0x88, 0x24, 0x58, 0x00, 0xb4, 0xa2, 0x4b, 0xfb, 0x1e, 0xf7, 0x34, 0xf7, 0x30, 0xf7,
0x24, 0xf7, 0x2d, 0x48, 0x4a, 0xb2, 0xe3, 0xa4, 0x93, 0xb9, 0xfb, 0xc3, 0x96, 0x48, 0x00, 0xfb,
0xe3, 0xdb, 0xdd, 0x6f, 0x17, 0x1a, 0xf5, 0x4f, 0xaf, 0x9e, 0x4f, 0xff, 0x7e, 0x7d, 0xc6, 0x32,
0x57, 0xe4, 0xe3, 0x11, 0xfd, 0x67, 0xb9, 0x28, 0x17, 0x31, 0x97, 0x25, 0xc7, 0xb3, 0x14, 0xe9,
0x78, 0x54, 0x48, 0x27, 0x58, 0x29, 0x0a, 0x19, 0xf3, 0x1b, 0x25, 0x57, 0x95, 0x36, 0x8e, 0xb3,
0x44, 0x97, 0x4e, 0x96, 0x2e, 0xe6, 0x2b, 0x95, 0xba, 0x2c, 0x7e, 0xbc, 0xbf, 0xcf, 0xc7, 0xbd,
0x66, 0x6b, 0xef, 0xce, 0x5a, 0x2a, 0x6f, 0x54, 0x22, 0xf7, 0xfc, 0x43, 0xa8, 0x4a, 0xe5, 0x94,
0xc8, 0xf7, 0x6c, 0x22, 0x72, 0x19, 0x1f, 0x84, 0x85, 0xf8, 0xa0, 0x8a, 0xba, 0xd8, 0x3c, 0xd7,
0x56, 0x1a, 0xff, 0x20, 0x66, 0x78, 0x2e, 0x35, 0x67, 0xbd, 0x3b, 0xaa, 0x5b, 0x83, 0x92, 0x4c,
0x18, 0x2b, 0xa1, 0xa4, 0x76, 0xf3, 0xbd, 0x27, 0x78, 0xeb, 0x94, 0xcb, 0xe5, 0xf8, 0x52, 0xd9,
0x84, 0x4d, 0xa4, 0x73, 0xaa, 0x5c, 0xd8, 0xd1, 0xb0, 0x79, 0x39, 0xb2, 0x89, 0x51, 0x95, 0x1b,
0xf7, 0x6e, 0x84, 0x61, 0xb9, 0x4e, 0x54, 0x15, 0x3a, 0x55, 0x48, 0x5d, 0xbb, 0x30, 0x8d, 0x53,
0x9d, 0xd4, 0x05, 0xcc, 0x0d, 0xb1, 0x10, 0xf7, 0x0f, 0x9e, 0xce, 0xeb, 0x32, 0x71, 0x4a, 0x97,
0xec, 0xe5, 0x20, 0xf8, 0xb8, 0x52, 0x65, 0xaa, 0x57, 0x91, 0xae, 0x64, 0x39, 0xe0, 0x99, 0x73,
0x95, 0x3d, 0x1a, 0x0e, 0x8b, 0x22, 0x5a, 0x96, 0x3a, 0x5a, 0xe5, 0x32, 0x8d, 0x16, 0x72, 0x38,
0x97, 0xc2, 0xd5, 0x46, 0xda, 0xa1, 0x6d, 0xd5, 0x0e, 0xbf, 0xb1, 0x32, 0xa9, 0x8d, 0x72, 0xeb,
0xbd, 0xee, 0x15, 0x0f, 0xfe, 0xd8, 0xc8, 0x3d, 0xb9, 0x2b, 0x77, 0x73, 0x90, 0x87, 0xfc, 0x9d,
0x95, 0xf9, 0x7c, 0x77, 0xf7, 0x9b, 0x4f, 0x76, 0xd7, 0x55, 0x2a, 0x9c, 0xbc, 0x6f, 0xef, 0xe2,
0x3c, 0x1d, 0xc8, 0xe0, 0xa3, 0x91, 0xb0, 0xa7, 0x64, 0x64, 0x9c, 0x3b, 0xcb, 0x25, 0x39, 0x77,
0xb2, 0xf6, 0x4b, 0xdb, 0xad, 0xca, 0x5e, 0xcd, 0xde, 0xef, 0x6c, 0x96, 0x0f, 0x1e, 0x70, 0x3d,
0x7b, 0x2f, 0x13, 0xc7, 0xe3, 0xd8, 0xad, 0x2b, 0xa9, 0xe7, 0xf4, 0xae, 0x7f, 0x6c, 0x8c, 0x58,
0x47, 0xca, 0xfa, 0xcf, 0x5b, 0x12, 0x72, 0x2d, 0xd2, 0x9f, 0x26, 0x03, 0x19, 0xba, 0xb8, 0xbf,
0x1f, 0x7c, 0xcc, 0xa5, 0x63, 0x3a, 0x4e, 0xa3, 0xc4, 0x00, 0x0e, 0xd9, 0xaa, 0x1d, 0xf0, 0x06,
0x79, 0x1e, 0x3c, 0xd5, 0x11, 0xbc, 0x3c, 0x76, 0xce, 0xa8, 0x59, 0xed, 0x24, 0x16, 0x4c, 0xc2,
0x43, 0x19, 0x84, 0x77, 0xdf, 0x93, 0x6e, 0xf8, 0xe6, 0xe4, 0x07, 0x37, 0x7c, 0x2f, 0x6e, 0x44,
0x27, 0xe0, 0x93, 0x8d, 0xc2, 0xae, 0x4b, 0x88, 0x70, 0x41, 0x98, 0x46, 0x33, 0x9d, 0xae, 0x23,
0x51, 0x01, 0x9f, 0xf4, 0x79, 0xa6, 0xf2, 0x74, 0xa0, 0x69, 0xbf, 0x48, 0xd3, 0xb3, 0x1b, 0x58,
0x71, 0xa1, 0x2c, 0xf2, 0x51, 0x9a, 0x01, 0x27, 0x9b, 0x79, 0x38, 0x08, 0xe2, 0xf1, 0xc7, 0x1f,
0xa5, 0xfb, 0x79, 0x10, 0x84, 0x90, 0x79, 0x92, 0x2c, 0x5f, 0xa8, 0x5c, 0x52, 0x9a, 0x0d, 0x08,
0x41, 0x3e, 0x4b, 0x96, 0xc9, 0x7c, 0xc1, 0x83, 0xcf, 0xae, 0x56, 0x88, 0xb6, 0x74, 0x08, 0x6a,
0xf0, 0xc7, 0xfd, 0x7a, 0xa4, 0x31, 0xda, 0xc0, 0x3d, 0xe8, 0x41, 0x31, 0x58, 0x9d, 0xcb, 0x28,
0xd7, 0x8b, 0x01, 0x3f, 0xa3, 0xf7, 0xac, 0x05, 0x0f, 0x11, 0x67, 0x73, 0x88, 0xf6, 0x30, 0x20,
0xfb, 0x0d, 0xe0, 0xba, 0x68, 0xdf, 0x03, 0x7d, 0x1c, 0x9c, 0xab, 0x45, 0x6d, 0x84, 0x47, 0xbb,
0x81, 0x81, 0xcd, 0x85, 0xa2, 0xac, 0xfb, 0x47, 0x79, 0x5e, 0x26, 0xba, 0xa8, 0x00, 0xba, 0x64,
0x95, 0x58, 0x48, 0x86, 0x94, 0x10, 0x7d, 0xe4, 0xc2, 0x4e, 0x80, 0x6c, 0xa6, 0x57, 0x53, 0x2d,
0xac, 0x6b, 0x62, 0x74, 0x10, 0x7c, 0xa4, 0xf4, 0xd7, 0xb1, 0xf7, 0xc2, 0xd1, 0x82, 0x0f, 0x8b,
0x2a, 0x61, 0xf2, 0xcb, 0xe9, 0xe5, 0x45, 0x2c, 0xe1, 0x4b, 0x92, 0x0b, 0x6b, 0xc9, 0x11, 0xf2,
0x6a, 0xe0, 0x9e, 0xb5, 0xae, 0x1c, 0x71, 0x92, 0x86, 0x28, 0x24, 0xb9, 0x14, 0x66, 0xda, 0x14,
0xcf, 0xa0, 0x2d, 0x22, 0x1f, 0x1b, 0xb7, 0x86, 0x93, 0xa2, 0x54, 0x85, 0xb7, 0x37, 0xe6, 0xa5,
0x2e, 0xe1, 0x59, 0xbb, 0x23, 0x06, 0x5c, 0xdd, 0xa1, 0x41, 0x67, 0x20, 0x12, 0x7b, 0x57, 0x9f,
0x91, 0x85, 0xbe, 0xa1, 0xc4, 0xf0, 0x8a, 0x00, 0xec, 0xe1, 0x0f, 0xfb, 0xfb, 0x3b, 0xee, 0xd4,
0x15, 0x81, 0x46, 0xb1, 0x20, 0x7f, 0x3a, 0x67, 0x4a, 0xb9, 0x62, 0x7f, 0xbb, 0xbc, 0x78, 0x89,
0xd2, 0x7c, 0x2d, 0x7f, 0xab, 0xa5, 0x75, 0x4f, 0xbf, 0x10, 0xf8, 0x1d, 0xd5, 0x5b, 0x74, 0x5c,
0xa6, 0x2c, 0xb4, 0xdb, 0x0a, 0x91, 0x92, 0x53, 0xe4, 0x5d, 0xe8, 0xdf, 0x58, 0x87, 0xb2, 0xb6,
0xe3, 0xf8, 0x11, 0x59, 0x11, 0x7c, 0x31, 0xce, 0x5b, 0xb9, 0x72, 0x57, 0xb0, 0x24, 0x19, 0xc9,
0x32, 0xec, 0x77, 0x02, 0x9a, 0x02, 0xbe, 0xbe, 0x9a, 0x4c, 0x91, 0xe1, 0xc3, 0xc6, 0x21, 0xc4,
0x80, 0x3c, 0x29, 0xbd, 0x27, 0x2f, 0xb4, 0x29, 0x4e, 0x11, 0xc9, 0xa7, 0x6d, 0x55, 0x96, 0x6d,
0x52, 0x0f, 0x38, 0xc5, 0x17, 0x89, 0x12, 0x51, 0xc2, 0xd8, 0x5f, 0xf6, 0x7f, 0x0d, 0x1b, 0xd4,
0x69, 0xad, 0x0c, 0xf0, 0xfe, 0x46, 0xe4, 0x35, 0x58, 0x92, 0x87, 0xfd, 0x83, 0x2d, 0x64, 0x49,
0x26, 0x93, 0xe5, 0xab, 0xba, 0xd8, 0xd6, 0x79, 0x7f, 0xd0, 0x97, 0xe4, 0x42, 0xb4, 0x94, 0xeb,
0x08, 0xa1, 0x4a, 0xb2, 0xc1, 0xf0, 0x97, 0xfd, 0xbd, 0x1f, 0x7e, 0x1d, 0x06, 0x28, 0xf6, 0x5f,
0xf8, 0x09, 0xec, 0xb5, 0x95, 0x48, 0xa8, 0x04, 0xa7, 0x62, 0x86, 0xff, 0x67, 0xe0, 0x72, 0xb8,
0xc8, 0x27, 0x99, 0x9a, 0x3b, 0x7c, 0x3e, 0x07, 0xb9, 0x1b, 0x9d, 0xe3, 0xdb, 0x71, 0x4e, 0xcf,
0xd7, 0x02, 0x94, 0x4d, 0xef, 0x45, 0x65, 0x2f, 0x74, 0xb2, 0xa4, 0x23, 0xe0, 0x6f, 0x5f, 0xc4,
0x93, 0x56, 0xd2, 0x35, 0x32, 0xf4, 0x4d, 0xd5, 0x7e, 0x39, 0xd5, 0xab, 0xd2, 0xcb, 0x45, 0x40,
0xf8, 0x4b, 0x5d, 0xd0, 0x06, 0xb0, 0x8b, 0x5e, 0x5d, 0x48, 0xaf, 0xc0, 0x7f, 0xf7, 0xbb, 0xfd,
0xb7, 0xd7, 0x6a, 0x91, 0x6d, 0x5e, 0xb7, 0x67, 0xcf, 0x11, 0x28, 0x43, 0x2f, 0x4f, 0x25, 0x55,
0x00, 0xff, 0x15, 0x49, 0x9c, 0xe4, 0x75, 0x2a, 0xed, 0x60, 0xe3, 0x5d, 0x10, 0xfc, 0xfe, 0x7b,
0xfb, 0x84, 0x72, 0xa5, 0xcf, 0x53, 0x39, 0x17, 0x75, 0xee, 0x50, 0xf4, 0xa8, 0x85, 0x9d, 0x32,
0xb9, 0x5d, 0xe3, 0x80, 0x4a, 0xde, 0x61, 0x1a, 0x70, 0x6f, 0xd9, 0x24, 0x10, 0x27, 0xce, 0x7f,
0xc7, 0xbf, 0x93, 0x44, 0xad, 0xf7, 0xed, 0x08, 0xbe, 0x1b, 0xf0, 0xb7, 0x17, 0x67, 0xa7, 0x20,
0x51, 0x9b, 0x3e, 0xe3, 0xa8, 0x1b, 0xec, 0xb6, 0x69, 0xb0, 0xa3, 0x6f, 0x82, 0xe4, 0xe3, 0x14,
0xc6, 0x23, 0x6c, 0x6a, 0x99, 0x1d, 0xad, 0xc7, 0x97, 0x0d, 0x4c, 0xd5, 0x4e, 0x27, 0x3a, 0x7f,
0xf0, 0x60, 0xe0, 0xdb, 0xd1, 0x7e, 0x38, 0xf0, 0xfd, 0x2a, 0xa6, 0x1d, 0xf9, 0xc4, 0x69, 0x03,
0x04, 0x49, 0xf9, 0xb9, 0x93, 0x05, 0xa5, 0x75, 0x72, 0x5e, 0x71, 0xef, 0x6a, 0xb3, 0x0d, 0xe7,
0x8b, 0x0a, 0x3c, 0x42, 0xee, 0xb0, 0x4b, 0x9d, 0xca, 0x88, 0x5d, 0xa3, 0x62, 0xad, 0x64, 0x92,
0xe2, 0xc8, 0xc8, 0x36, 0x76, 0x7e, 0x0d, 0xa6, 0x08, 0x6f, 0x49, 0xb4, 0xb7, 0x25, 0x86, 0x5e,
0x5a, 0x10, 0xd0, 0x2e, 0xcf, 0xf2, 0x24, 0xfe, 0x99, 0x6f, 0x80, 0xe8, 0x7f, 0xfc, 0x3b, 0xbf,
0x7c, 0xc4, 0xe1, 0xee, 0xb6, 0x79, 0x0d, 0x6d, 0xf4, 0xde, 0x3e, 0xab, 0xe2, 0xef, 0xb9, 0xc7,
0xb7, 0x37, 0x1a, 0xb6, 0x5d, 0x77, 0xe4, 0xb9, 0x61, 0xfc, 0x57, 0x55, 0x50, 0xff, 0x66, 0xb5,
0xc9, 0x51, 0xe4, 0x9e, 0x2e, 0x12, 0x0b, 0x0e, 0x7d, 0x8a, 0x8d, 0x7e, 0xc3, 0x68, 0xd8, 0xcc,
0x1b, 0x44, 0xe6, 0xe0, 0x48, 0xd2, 0x1c, 0x73, 0xa0, 0x85, 0xde, 0x3e, 0x47, 0x5d, 0xf4, 0x98,
0xc2, 0x33, 0x7d, 0x7b, 0x67, 0x79, 0x3b, 0x8f, 0x4c, 0xe6, 0x9c, 0x61, 0x1a, 0xc8, 0x34, 0x56,
0x2a, 0x6d, 0x69, 0x38, 0x48, 0xd5, 0x0d, 0xf3, 0xa4, 0x12, 0x83, 0xe3, 0x00, 0xc7, 0xea, 0xf6,
0xbb, 0x4c, 0xe6, 0xd5, 0x09, 0x8d, 0x2a, 0x08, 0x9c, 0x43, 0x34, 0xa8, 0xdd, 0xc4, 0xbc, 0x79,
0xe0, 0xd0, 0x9a, 0xe4, 0x2a, 0x59, 0xc6, 0xfc, 0x25, 0xa9, 0x7d, 0x36, 0x1a, 0x36, 0x0b, 0x30,
0x0d, 0x22, 0xc6, 0xf7, 0x9f, 0xe9, 0x6d, 0x0e, 0x9d, 0xd0, 0x21, 0xaa, 0xa0, 0xed, 0xb9, 0x5b,
0x27, 0x6c, 0x3d, 0x2b, 0x14, 0x6c, 0x9c, 0x88, 0x1b, 0xb9, 0xdd, 0x92, 0x99, 0x4e, 0x7c, 0x76,
0x38, 0xee, 0x4d, 0xda, 0xc9, 0x81, 0x3d, 0x60, 0x6f, 0x7c, 0x9f, 0xa7, 0xfc, 0xac, 0x2b, 0x60,
0x73, 0x38, 0xee, 0xc6, 0x1a, 0x76, 0x7d, 0xfe, 0xea, 0x88, 0x8d, 0x54, 0x59, 0xd5, 0xae, 0x15,
0x5d, 0xc1, 0xb9, 0x95, 0x36, 0x29, 0xf7, 0x20, 0x61, 0x7d, 0x33, 0x37, 0xf9, 0xef, 0x56, 0xfd,
0x13, 0x5f, 0x1f, 0x01, 0x2c, 0xf1, 0x01, 0x79, 0xbe, 0xc0, 0x54, 0xe6, 0x9f, 0x54, 0xb9, 0xf3,
0xa4, 0x4b, 0x94, 0x0d, 0x65, 0x72, 0xcc, 0x37, 0xc4, 0x41, 0x4c, 0x18, 0x40, 0x56, 0x25, 0x1c,
0xd2, 0x07, 0x2b, 0x9e, 0x2c, 0xfe, 0x02, 0x35, 0xa4, 0xbc, 0x40, 0x82, 0x81, 0xe9, 0x31, 0x3e,
0x19, 0x95, 0x70, 0xe6, 0x87, 0x2d, 0x68, 0xdc, 0x4d, 0x38, 0xc1, 0x1e, 0xb1, 0x54, 0x2d, 0x94,
0x63, 0xd8, 0x36, 0x03, 0x93, 0x00, 0x13, 0x03, 0xf8, 0x29, 0x24, 0x3e, 0xec, 0x50, 0xa6, 0x73,
0x6d, 0x8e, 0xbe, 0x99, 0x0b, 0x1a, 0x21, 0x1f, 0x7c, 0xf3, 0xc3, 0x93, 0x27, 0x4f, 0x9e, 0xb2,
0x37, 0xa5, 0x2c, 0x13, 0xb3, 0xae, 0x9c, 0x4c, 0x99, 0x33, 0xa2, 0xb4, 0x85, 0xb2, 0x96, 0x2a,
0x84, 0x9d, 0xa0, 0xe3, 0x19, 0xd4, 0x7a, 0xe9, 0xd8, 0x2a, 0x93, 0x54, 0xbf, 0x39, 0xa6, 0x16,
0x6a, 0x9a, 0x70, 0x35, 0x64, 0xa9, 0x66, 0xaf, 0xae, 0xa6, 0x0c, 0xa4, 0xc4, 0xd6, 0xba, 0x36,
0x6c, 0x26, 0xca, 0x25, 0x16, 0x69, 0x41, 0x9b, 0x90, 0x4d, 0xce, 0x2f, 0x43, 0x26, 0x5d, 0x12,
0xb1, 0x4a, 0x95, 0xfd, 0x5e, 0x17, 0x58, 0x33, 0x26, 0xee, 0x62, 0x2b, 0x65, 0x20, 0xcd, 0x5a,
0x36, 0xb8, 0x9a, 0x1e, 0x07, 0xcc, 0xea, 0xb9, 0x5b, 0x09, 0x23, 0x59, 0x33, 0x72, 0xdd, 0xc1,
0xdc, 0x83, 0x34, 0xd3, 0x1f, 0xba, 0x64, 0x7c, 0x75, 0xe5, 0xf3, 0xca, 0x8c, 0xaf, 0x11, 0x8c,
0x2a, 0x33, 0x00, 0xe1, 0xb3, 0x51, 0x6a, 0x4e, 0x5c, 0x5d, 0xdf, 0x8a, 0xc8, 0xc3, 0xc3, 0x16,
0x9d, 0xa9, 0x06, 0x7a, 0x34, 0x00, 0x33, 0x98, 0x11, 0x32, 0xe4, 0x3c, 0xeb, 0x26, 0x4a, 0x86,
0xf1, 0xca, 0xa2, 0x51, 0x91, 0x73, 0xac, 0x94, 0x84, 0x8e, 0x66, 0x22, 0xb7, 0xba, 0xc5, 0xdb,
0x65, 0x12, 0x93, 0x83, 0x31, 0x80, 0x84, 0x75, 0xea, 0xfa, 0xde, 0xaa, 0x69, 0x26, 0x37, 0x6f,
0x68, 0x36, 0xa8, 0xf3, 0x94, 0xcd, 0x24, 0xcd, 0xd1, 0xe5, 0x02, 0x62, 0x3c, 0x96, 0x50, 0x87,
0xc9, 0xb0, 0x55, 0x9e, 0x46, 0x74, 0x6c, 0x34, 0x1b, 0xf7, 0x4e, 0x95, 0xed, 0xac, 0x69, 0xf6,
0x95, 0xda, 0x21, 0x03, 0x08, 0xe4, 0x90, 0x69, 0xa8, 0x34, 0x2b, 0x05, 0xbc, 0x45, 0xc9, 0x90,
0x26, 0xc8, 0x7f, 0xd8, 0x91, 0xe0, 0xc1, 0xc8, 0x39, 0x8a, 0x2e, 0x63, 0xcd, 0x05, 0x60, 0x83,
0x26, 0xa1, 0x3e, 0xf3, 0x8e, 0x8e, 0xd4, 0x36, 0xa7, 0xa9, 0x4a, 0x90, 0x6c, 0xcd, 0x34, 0x43,
0x98, 0x83, 0x01, 0xd6, 0x8d, 0x75, 0x5e, 0xb7, 0x9a, 0x7b, 0xf5, 0x39, 0x85, 0x09, 0xdb, 0xd2,
0xc6, 0xa4, 0xb4, 0x3f, 0x1a, 0xaa, 0x06, 0xf5, 0x53, 0x59, 0xae, 0x99, 0x48, 0x12, 0x0a, 0x1f,
0x30, 0x79, 0xab, 0x5e, 0x28, 0xd6, 0x71, 0x13, 0x9d, 0xa6, 0x93, 0x32, 0xfd, 0x93, 0x18, 0x5e,
0xbd, 0x6d, 0x63, 0x48, 0x7f, 0x2f, 0x44, 0x02, 0x7a, 0x24, 0xc8, 0x21, 0xe7, 0x4f, 0x0e, 0xbe,
0x9e, 0xb4, 0xb1, 0x3b, 0xce, 0xf3, 0xad, 0x5a, 0x51, 0xa6, 0xac, 0x1d, 0x16, 0x91, 0x5b, 0x58,
0x01, 0xe0, 0x92, 0x12, 0xa3, 0xc3, 0xd6, 0x8c, 0xff, 0x87, 0x4a, 0x38, 0xde, 0xc1, 0xdb, 0xc3,
0x07, 0x8c, 0x61, 0x0c, 0xd2, 0xc2, 0x21, 0xc8, 0x4b, 0x1f, 0x03, 0x45, 0x59, 0x91, 0x48, 0x1a,
0x1d, 0xc1, 0x9c, 0xcd, 0x98, 0xd8, 0x65, 0x3d, 0x31, 0x4f, 0xf6, 0x70, 0x3c, 0xe9, 0xb2, 0xbc,
0x21, 0x1c, 0x50, 0xcd, 0xc3, 0xf1, 0x9f, 0xd0, 0xe3, 0x1b, 0x62, 0xba, 0xde, 0xa5, 0x28, 0x6b,
0x91, 0xfb, 0xb0, 0x74, 0x47, 0x37, 0xbc, 0x67, 0xc6, 0x67, 0x4d, 0x06, 0x1f, 0x9b, 0xb4, 0x56,
0xa5, 0xc6, 0xa6, 0xcf, 0x22, 0xd8, 0x32, 0xd5, 0xf1, 0x15, 0xdf, 0xd8, 0x44, 0x2c, 0x5a, 0x57,
0x20, 0xc1, 0xd7, 0x98, 0xe8, 0xb4, 0x69, 0x8d, 0x12, 0x1d, 0x8b, 0xcf, 0x1c, 0x46, 0xe8, 0x72,
0xd9, 0xb0, 0x5d, 0x3b, 0xae, 0xb3, 0x5e, 0x86, 0x84, 0x8b, 0xf9, 0xb0, 0x05, 0x1c, 0xdd, 0x88,
0x6c, 0xee, 0x5a, 0x33, 0xaa, 0xaf, 0x9d, 0xda, 0x3b, 0xe1, 0xed, 0xf3, 0x68, 0x28, 0x36, 0x81,
0x18, 0xf7, 0x5a, 0x7d, 0x9b, 0x45, 0x9f, 0xa5, 0x3b, 0x56, 0xfb, 0x81, 0xbd, 0x8d, 0xb9, 0x9f,
0xc9, 0x7c, 0xca, 0x55, 0xb8, 0x87, 0x36, 0xfa, 0xc6, 0xac, 0x83, 0xae, 0x77, 0x3f, 0x76, 0xdf,
0xee, 0xcc, 0xb1, 0x69, 0x34, 0x99, 0x47, 0x24, 0x25, 0xbc, 0x63, 0x75, 0xf0, 0xed, 0xf8, 0x8d,
0xdf, 0xb6, 0x41, 0xb4, 0x49, 0xca, 0x0d, 0x5b, 0x7d, 0x1e, 0x8a, 0xce, 0x4b, 0xd6, 0xa2, 0x01,
0x68, 0x5a, 0x24, 0x7a, 0x5b, 0x28, 0x08, 0xaf, 0x0e, 0x86, 0x5b, 0xf7, 0x8c, 0x5b, 0x60, 0x74,
0x58, 0xdc, 0xde, 0xb1, 0x45, 0xa4, 0x77, 0x3f, 0x24, 0x87, 0x9f, 0xc7, 0xe4, 0x33, 0x9d, 0xf3,
0x5e, 0x4c, 0x0e, 0xc3, 0x1d, 0xe3, 0x3f, 0x05, 0x64, 0x07, 0x0f, 0xaa, 0xa0, 0xde, 0x97, 0x4a,
0xa8, 0x71, 0x84, 0x5a, 0x44, 0x8b, 0xce, 0xf0, 0xf6, 0xe5, 0xca, 0x97, 0xe6, 0xd5, 0xcf, 0x67,
0xaf, 0xdf, 0xbe, 0x3e, 0x9f, 0x9e, 0x35, 0x7d, 0x03, 0x74, 0x6b, 0xa8, 0xc7, 0xdc, 0x7b, 0x22,
0xf2, 0xe1, 0xe8, 0xd1, 0x25, 0xac, 0xa1, 0xda, 0xdb, 0xf2, 0x0a, 0x41, 0xa4, 0xf1, 0x5b, 0x8d,
0x6e, 0x82, 0x06, 0x38, 0xdf, 0xa5, 0x11, 0x06, 0x2e, 0x37, 0x72, 0xcf, 0x13, 0x63, 0x7b, 0xd1,
0xf3, 0xea, 0xce, 0x26, 0xd7, 0x51, 0x5b, 0x97, 0x2f, 0xee, 0xa1, 0xfb, 0x70, 0x43, 0xdd, 0xd6,
0x93, 0x23, 0x11, 0xf0, 0x8c, 0x2a, 0x3f, 0x45, 0x6f, 0x8a, 0xba, 0xaa, 0x39, 0x9e, 0xe1, 0x82,
0xd5, 0x95, 0x4a, 0x5b, 0x0e, 0xdd, 0x8f, 0x16, 0x68, 0xc1, 0x59, 0x3d, 0x8b, 0x70, 0x6b, 0x1c,
0x5e, 0x6a, 0x5d, 0x62, 0x36, 0xac, 0xd1, 0xe9, 0x86, 0x34, 0x10, 0x0e, 0xd1, 0xba, 0x85, 0x59,
0xd0, 0x8f, 0x29, 0xef, 0x66, 0x39, 0xfa, 0x25, 0x1f, 0xd3, 0xeb, 0xcb, 0x4b, 0xca, 0x86, 0x1e,
0xbb, 0x91, 0x86, 0xf8, 0x86, 0xed, 0x47, 0x07, 0x8f, 0xa2, 0xfd, 0xbd, 0xd9, 0xc1, 0xe3, 0xe8,
0xf0, 0x31, 0xfb, 0xcf, 0xbf, 0xfe, 0x4d, 0x18, 0x0c, 0x92, 0x80, 0x1d, 0xee, 0x1f, 0x3e, 0x64,
0x5f, 0xa7, 0x91, 0x2e, 0xaf, 0xf0, 0x63, 0x58, 0x08, 0x55, 0x46, 0x51, 0xb4, 0xb3, 0x7e, 0x44,
0xeb, 0x47, 0x05, 0x7a, 0x06, 0x12, 0xe4, 0xae, 0x59, 0x3f, 0x7a, 0x91, 0x6c, 0x67, 0x7b, 0x33,
0xd1, 0x3e, 0xd7, 0x05, 0x26, 0x2b, 0x76, 0x5c, 0x63, 0x14, 0x34, 0xdb, 0x8a, 0xc6, 0xdf, 0x9c,
0x88, 0x10, 0x20, 0xff, 0x3f, 0x00, 0x39, 0xda, 0x08, 0xfe, 0x2a, 0x61, 0x2b, 0xb5, 0x54, 0x43,
0x7f, 0x6d, 0xa2, 0xdb, 0x02, 0xec, 0xdb, 0x43, 0x5b, 0xd8, 0x4b, 0x8c, 0x4c, 0x15, 0xd5, 0xe9,
0x27, 0x4e, 0xee, 0x6e, 0xc5, 0xd8, 0x22, 0xe9, 0x02, 0x88, 0x16, 0xa0, 0x64, 0xd3, 0x4f, 0x6c,
0x25, 0x13, 0x05, 0xda, 0x75, 0x68, 0x8d, 0xcb, 0x8d, 0xaf, 0xbd, 0x63, 0x96, 0xd5, 0xe8, 0x9c,
0xfe, 0xad, 0x1f, 0x0e, 0xd0, 0x03, 0x71, 0xed, 0x31, 0x6b, 0xdc, 0xc3, 0xd1, 0xb4, 0x35, 0xa3,
0xc9, 0x17, 0xe9, 0x82, 0xfe, 0xd0, 0xfc, 0x44, 0xe3, 0x91, 0xeb, 0x77, 0x38, 0xf5, 0x9a, 0x40,
0x1e, 0x7c, 0xbf, 0xe7, 0xa3, 0xf9, 0x3c, 0x33, 0xb8, 0xe4, 0x2a, 0x34, 0x90, 0x49, 0x92, 0xad,
0xe8, 0x27, 0x82, 0xb6, 0x5f, 0x5f, 0xa0, 0x93, 0xe3, 0xf6, 0x85, 0xb4, 0x83, 0x51, 0xcd, 0xb8,
0xf1, 0x75, 0x68, 0xcc, 0x72, 0x3d, 0x43, 0xd8, 0x71, 0x83, 0x36, 0xc3, 0x8b, 0xf3, 0xe7, 0x67,
0xaf, 0x26, 0x67, 0x9f, 0xa2, 0xdd, 0xbb, 0x3c, 0x9f, 0xb2, 0xbc, 0x51, 0xe5, 0x3d, 0x44, 0x93,
0xef, 0x2c, 0x9d, 0x48, 0x03, 0xb7, 0xe0, 0x87, 0xb5, 0x18, 0x15, 0xd0, 0x54, 0x70, 0x5f, 0x2d,
0x3b, 0x36, 0xb4, 0xaa, 0xe2, 0xc4, 0x5b, 0xfe, 0x2e, 0xcf, 0xfc, 0xf5, 0x9c, 0xda, 0x1d, 0x6d,
0x69, 0x7a, 0x0b, 0x71, 0x05, 0x31, 0x65, 0xf3, 0xfb, 0xc7, 0x17, 0x07, 0xfb, 0x4f, 0xe7, 0xfa,
0xde, 0x57, 0x0d, 0xf6, 0x43, 0xea, 0xb8, 0xf8, 0xa0, 0xfb, 0x0c, 0x5d, 0x6e, 0xe8, 0x27, 0xd6,
0xff, 0x02, 0x20, 0x89, 0x9e, 0x55, 0x72, 0x15, 0x00, 0x00
};
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
const uint16_t PAGE_settings_um_length = 3223;
const uint8_t PAGE_settings_um[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0xeb, 0x72, 0xdb, 0xc6,
0x15, 0xfe, 0xaf, 0xa7, 0x80, 0x36, 0xaa, 0x04, 0x0c, 0x21, 0x90, 0x8a, 0x93, 0x19, 0x9b, 0x20,
0xa0, 0xda, 0xb2, 0x13, 0xab, 0xb5, 0x23, 0x4d, 0x64, 0x27, 0xe9, 0x28, 0xaa, 0x0d, 0x02, 0x4b,
0x72, 0x2d, 0x70, 0x17, 0x01, 0x16, 0xba, 0x94, 0xd2, 0x5b, 0xf4, 0x7f, 0x3a, 0xed, 0x2b, 0xf4,
0xc1, 0xfa, 0x08, 0xfd, 0xf6, 0x02, 0x10, 0xa4, 0x25, 0x39, 0xe9, 0xa4, 0xd3, 0xfe, 0x91, 0xc0,
0xc5, 0xd9, 0xb3, 0xe7, 0xf2, 0x9d, 0x6f, 0xcf, 0x2e, 0x46, 0x9b, 0xcf, 0x8f, 0x0e, 0xde, 0xfc,
0xe9, 0xf8, 0x85, 0x33, 0x93, 0xf3, 0x3c, 0x1e, 0xd9, 0xbf, 0x34, 0xc9, 0x9c, 0x3c, 0xe1, 0xd3,
0x88, 0x50, 0x4e, 0xe2, 0xd1, 0x9c, 0xca, 0xc4, 0x49, 0x67, 0x49, 0x59, 0x51, 0x19, 0x91, 0x5a,
0x4e, 0x76, 0x1f, 0x37, 0xa3, 0x1b, 0x3c, 0x99, 0xd3, 0x88, 0x5c, 0x30, 0x7a, 0x59, 0x88, 0x52,
0x12, 0x27, 0x15, 0x5c, 0x52, 0x0e, 0xb1, 0x4b, 0x96, 0xc9, 0x59, 0xf4, 0xe5, 0x60, 0xd0, 0x8a,
0xae, 0xbd, 0xca, 0xe8, 0x05, 0x4b, 0xe9, 0xae, 0xfe, 0xe1, 0x33, 0xce, 0x24, 0x4b, 0xf2, 0xdd,
0x2a, 0x4d, 0x72, 0x1a, 0xed, 0xf9, 0xf3, 0xe4, 0x8a, 0xcd, 0xeb, 0x79, 0xfb, 0xbb, 0xae, 0x68,
0xa9, 0x7f, 0x24, 0x63, 0xfc, 0xe6, 0x82, 0x7c, 0xb4, 0x72, 0x3c, 0x92, 0x4c, 0xe6, 0x34, 0x7e,
0x0b, 0xc9, 0xb9, 0xc8, 0x9c, 0x13, 0x2a, 0x25, 0xe3, 0xd3, 0x6a, 0xd4, 0x37, 0xe3, 0xa3, 0x2a,
0x2d, 0x59, 0x21, 0xe3, 0x8d, 0x8b, 0xa4, 0x74, 0xb2, 0x28, 0x13, 0x69, 0x3d, 0x87, 0x35, 0x61,
0x16, 0x60, 0xad, 0x77, 0xd3, 0x82, 0x89, 0xe8, 0xd1, 0x13, 0x3f, 0x0b, 0xea, 0xf9, 0xbb, 0x22,
0x3a, 0x3d, 0xc3, 0x53, 0x59, 0x5d, 0x64, 0xf6, 0x49, 0x18, 0x81, 0xd3, 0xb3, 0x50, 0xcd, 0x16,
0x97, 0x9c, 0x96, 0x7e, 0x2e, 0x52, 0x56, 0xf8, 0x75, 0x29, 0x2e, 0x2b, 0xbf, 0x9e, 0x1f, 0x4c,
0xa6, 0xd1, 0xe2, 0xd6, 0x2f, 0x18, 0xaf, 0xd4, 0x1c, 0xfc, 0x3f, 0x52, 0xff, 0x21, 0x14, 0x6d,
0xee, 0x85, 0x93, 0x9a, 0xa7, 0x92, 0x09, 0xee, 0x4c, 0x0f, 0x33, 0x97, 0x7a, 0x8b, 0x92, 0xca,
0xba, 0xe4, 0x4e, 0x16, 0x4c, 0xa9, 0x7c, 0x91, 0x53, 0x65, 0xc8, 0xb3, 0x6b, 0xfd, 0xea, 0xb6,
0x15, 0x65, 0xd5, 0x51, 0x47, 0x94, 0x6e, 0x6f, 0x13, 0x31, 0xfe, 0x40, 0x53, 0x49, 0xa2, 0x48,
0x5e, 0x17, 0x54, 0x4c, 0xd4, 0xd8, 0xe6, 0xd3, 0xb2, 0x4c, 0xae, 0x03, 0x56, 0xe9, 0xff, 0x2b,
0xf3, 0x5f, 0xba, 0xde, 0xe2, 0x92, 0xf1, 0x4c, 0x5c, 0x06, 0xa2, 0xa0, 0xdc, 0x25, 0x33, 0x29,
0x8b, 0x6a, 0xd8, 0xef, 0x4f, 0x99, 0x9c, 0xd5, 0xe3, 0x20, 0x15, 0xf3, 0xfe, 0x53, 0x56, 0xa6,
0x42, 0x88, 0x73, 0x46, 0xfb, 0xdf, 0xbf, 0x7a, 0xf1, 0xbc, 0x7f, 0xc9, 0xce, 0x59, 0xbf, 0x89,
0xdc, 0x67, 0xb5, 0x09, 0xe5, 0x6e, 0x65, 0x07, 0x48, 0x47, 0xfb, 0xb3, 0x75, 0xed, 0xfd, 0x56,
0xca, 0x27, 0xef, 0x2a, 0x9a, 0x4f, 0xba, 0xd2, 0xb9, 0x48, 0xb2, 0x3f, 0x9c, 0xb8, 0xd4, 0x97,
0xd1, 0xe6, 0xc0, 0x5b, 0xe4, 0x54, 0x3a, 0x3c, 0xca, 0x82, 0xb4, 0xa4, 0x89, 0xa4, 0x36, 0x00,
0x2e, 0x31, 0x19, 0x22, 0x5e, 0xc8, 0x03, 0x28, 0x7b, 0x2a, 0x65, 0xc9, 0xc6, 0xb5, 0xa4, 0x78,
0x51, 0xa6, 0xc4, 0xa7, 0x9e, 0xbf, 0x3e, 0xae, 0xe2, 0x80, 0xe5, 0x24, 0xbd, 0x92, 0xfd, 0x0f,
0xc9, 0x45, 0xd2, 0x28, 0xf8, 0x48, 0x30, 0xa9, 0xae, 0x39, 0x54, 0x48, 0x0f, 0xc9, 0x1c, 0x8b,
0xec, 0x3a, 0x48, 0x0a, 0x18, 0x9d, 0x1d, 0xcc, 0x58, 0x9e, 0xb9, 0x5c, 0xc9, 0x27, 0x59, 0xf6,
0xe2, 0x02, 0x56, 0xbc, 0x62, 0x15, 0x40, 0x4a, 0x4b, 0x97, 0x28, 0x9b, 0x89, 0xef, 0x7a, 0x51,
0xbc, 0xf8, 0x9a, 0xca, 0xef, 0x5c, 0x2f, 0x9c, 0x88, 0xd2, 0x55, 0xa6, 0xd3, 0x68, 0x10, 0xd2,
0x91, 0x01, 0x48, 0x90, 0x53, 0x3e, 0x95, 0xb3, 0x90, 0xf6, 0x7a, 0x9e, 0x4a, 0x7e, 0x50, 0xd4,
0xd5, 0xcc, 0x35, 0xef, 0x4e, 0xe9, 0x99, 0xa7, 0x91, 0x60, 0x06, 0x89, 0x1a, 0x83, 0x77, 0xbb,
0x7b, 0x51, 0x64, 0x70, 0x76, 0x3a, 0x38, 0xdb, 0xde, 0x36, 0x8f, 0x41, 0x35, 0x63, 0x13, 0xe9,
0x7a, 0xb7, 0x77, 0x1b, 0x43, 0xcb, 0x52, 0x94, 0x88, 0x01, 0x8c, 0x41, 0x19, 0x55, 0x22, 0xa7,
0x41, 0x2e, 0xa6, 0x2e, 0x79, 0xa1, 0xc6, 0x1d, 0x1b, 0x61, 0x44, 0xdf, 0x99, 0xb0, 0x9c, 0xea,
0x58, 0xa1, 0x6e, 0x4a, 0xc4, 0xf4, 0x95, 0x1d, 0x07, 0x5c, 0x30, 0x71, 0xc2, 0xa6, 0x75, 0x99,
0xe8, 0x94, 0x98, 0x58, 0x39, 0x93, 0x04, 0x13, 0xb2, 0xe0, 0x47, 0x7e, 0xc8, 0x01, 0x88, 0x02,
0xee, 0x51, 0xa7, 0x48, 0xa6, 0xd4, 0xc9, 0x12, 0x99, 0x6c, 0x22, 0x87, 0x9d, 0x2c, 0x9e, 0x20,
0xe7, 0x44, 0x2d, 0x30, 0x04, 0x06, 0x6d, 0xf2, 0x01, 0x70, 0xad, 0x2f, 0x28, 0x4a, 0x21, 0x45,
0x2a, 0xf2, 0xed, 0x6d, 0x57, 0x83, 0x7e, 0xe0, 0xbb, 0xba, 0x42, 0x22, 0x25, 0x91, 0x9f, 0x48,
0x51, 0x42, 0xab, 0xc2, 0xfb, 0xa1, 0xa4, 0x73, 0x15, 0xdd, 0xf4, 0xb0, 0x20, 0x9e, 0x77, 0x73,
0x63, 0xc5, 0x30, 0x7f, 0x5e, 0xc0, 0xe0, 0xaf, 0xa0, 0xdf, 0x79, 0x2d, 0x32, 0x1a, 0x38, 0xc7,
0x39, 0x4d, 0x2a, 0xea, 0x20, 0x10, 0xb4, 0x74, 0x14, 0x3e, 0x9d, 0xc3, 0x63, 0x98, 0xe4, 0xaf,
0x68, 0xac, 0x56, 0x35, 0x9a, 0xb2, 0xf4, 0x3c, 0x48, 0x65, 0xb0, 0xb7, 0x5b, 0x4e, 0x5f, 0x75,
0xcb, 0x29, 0x8a, 0xa2, 0x1e, 0xea, 0x87, 0x6e, 0x46, 0x91, 0x3b, 0xb8, 0x59, 0xad, 0xbb, 0xc3,
0xbb, 0x04, 0xa3, 0x8f, 0x04, 0xe1, 0xcb, 0x31, 0x32, 0xae, 0x84, 0xd9, 0xc4, 0x35, 0xe5, 0xea,
0x29, 0x8c, 0xa8, 0x0c, 0xc9, 0x53, 0xee, 0x8b, 0x33, 0x44, 0xfd, 0x48, 0x17, 0x6d, 0x00, 0x27,
0x4a, 0x46, 0x95, 0xb0, 0x67, 0x85, 0x85, 0xe7, 0x69, 0x22, 0x89, 0xb8, 0xdf, 0x68, 0x12, 0x5e,
0x48, 0x73, 0x78, 0x0c, 0x09, 0x02, 0xdc, 0x20, 0xca, 0x3c, 0x28, 0x69, 0x91, 0x27, 0x29, 0x30,
0x7c, 0x7a, 0x06, 0xa8, 0x13, 0x2f, 0xa8, 0xea, 0x71, 0x25, 0x4b, 0x77, 0xf7, 0x91, 0xd6, 0xb4,
0x5a, 0xff, 0xc2, 0x18, 0xa0, 0x48, 0x4a, 0x02, 0xa4, 0x72, 0x24, 0x1a, 0x7c, 0x4a, 0xe0, 0x53,
0x9c, 0xca, 0xb3, 0x38, 0x1a, 0x20, 0x43, 0x4b, 0xa4, 0xaa, 0xb1, 0x2e, 0x48, 0xb5, 0x49, 0x9e,
0xb5, 0x43, 0x7c, 0x24, 0x7d, 0xaf, 0xe8, 0x7d, 0xa6, 0xdc, 0x61, 0x46, 0xeb, 0xad, 0x5a, 0xba,
0x13, 0x77, 0x6c, 0x01, 0x07, 0x49, 0xb1, 0x8c, 0x3d, 0x81, 0x9b, 0x80, 0x2e, 0xd9, 0x6c, 0xf9,
0x6e, 0x9f, 0x90, 0x21, 0x6d, 0x23, 0xd2, 0x3f, 0xfd, 0xf1, 0xfb, 0x77, 0x67, 0xfd, 0xa9, 0x4f,
0x1c, 0x84, 0xa5, 0x1d, 0x75, 0xff, 0xfc, 0xe3, 0xe5, 0x62, 0xef, 0xd6, 0xbb, 0x71, 0x7f, 0xac,
0x7a, 0xe6, 0x11, 0x32, 0xa8, 0x1c, 0x1a, 0x48, 0xf1, 0x16, 0x75, 0x5f, 0x1e, 0x00, 0x55, 0xae,
0xd7, 0x59, 0x1a, 0xf5, 0xf6, 0x15, 0xa3, 0xa0, 0x02, 0x10, 0x94, 0x8f, 0xbc, 0x81, 0xb2, 0xdb,
0x9c, 0x72, 0xcf, 0x5b, 0x68, 0x92, 0xef, 0x45, 0x3b, 0xa3, 0x59, 0xe9, 0xa4, 0x79, 0x52, 0x55,
0x11, 0xa9, 0xe6, 0x39, 0x89, 0x77, 0x7c, 0x52, 0xf3, 0x73, 0x8e, 0x40, 0x20, 0x55, 0x91, 0xbc,
0xb9, 0xa1, 0x01, 0xe3, 0x69, 0x5e, 0x67, 0x48, 0x34, 0x19, 0x12, 0x05, 0x6e, 0x3b, 0xf5, 0xfd,
0xa8, 0x88, 0x47, 0x75, 0xbc, 0xb5, 0x68, 0xbc, 0x94, 0xde, 0xed, 0xa8, 0x5f, 0xc7, 0xa3, 0x7e,
0x11, 0xbf, 0x37, 0xcc, 0x62, 0x50, 0x23, 0x7c, 0x76, 0x07, 0x6a, 0x60, 0xc4, 0xc3, 0x2b, 0xed,
0x77, 0x5c, 0x80, 0x0a, 0x6f, 0xb8, 0xfc, 0xdd, 0xc3, 0xfb, 0x9e, 0xd4, 0xa3, 0xb7, 0x77, 0xa7,
0x8a, 0x2f, 0x51, 0xc3, 0x90, 0x2e, 0x36, 0xe2, 0x4d, 0xba, 0x18, 0xd2, 0xb5, 0x1a, 0x9c, 0x53,
0x76, 0xe6, 0x83, 0xc2, 0x75, 0xd2, 0x17, 0x6a, 0x46, 0xee, 0x57, 0x4d, 0x7e, 0x78, 0x58, 0x5d,
0x32, 0x99, 0xce, 0xdc, 0xca, 0x5b, 0xa4, 0x88, 0x31, 0x19, 0x0b, 0x10, 0x55, 0xc2, 0xc9, 0x10,
0x01, 0x4b, 0x67, 0x34, 0x3d, 0x1f, 0x8b, 0x2b, 0x54, 0x68, 0xb4, 0x73, 0x91, 0xe4, 0x35, 0x36,
0x6f, 0x59, 0xd6, 0x94, 0xec, 0xf4, 0x5c, 0xbe, 0x8f, 0xc6, 0x41, 0xbd, 0xa7, 0x19, 0x8c, 0x05,
0x45, 0x8e, 0xb1, 0x31, 0x9c, 0x87, 0x5a, 0x07, 0xaf, 0xe7, 0x63, 0x5a, 0x92, 0x61, 0x1e, 0xbd,
0xb7, 0xb3, 0xb6, 0x16, 0xfc, 0x96, 0xbc, 0xf7, 0x6d, 0x85, 0x44, 0xb2, 0x53, 0x11, 0xfb, 0x6e,
0x8e, 0x34, 0x39, 0xd8, 0xd1, 0x23, 0xf2, 0xe5, 0x80, 0x38, 0x73, 0xc6, 0x23, 0xb2, 0xbb, 0x47,
0xda, 0xac, 0x91, 0x1d, 0x98, 0x4b, 0x18, 0xc7, 0x26, 0x31, 0xd4, 0xa2, 0x20, 0xd8, 0x22, 0x22,
0x09, 0xbf, 0x6e, 0x65, 0xae, 0xae, 0x72, 0xb2, 0x63, 0x2d, 0xc8, 0xe8, 0x24, 0xa9, 0x73, 0xa9,
0xec, 0x57, 0x9b, 0x8c, 0xb2, 0x7d, 0xc5, 0x0a, 0x4c, 0xbf, 0x46, 0x3f, 0x62, 0x3a, 0x9a, 0xe1,
0xe7, 0x5f, 0x0e, 0x8a, 0xab, 0x90, 0xbc, 0xbf, 0x45, 0x84, 0x9b, 0xbc, 0x3b, 0x2b, 0x29, 0x77,
0x60, 0x76, 0x1b, 0x88, 0x28, 0xaa, 0xf6, 0x5b, 0x78, 0x30, 0x5e, 0xd4, 0xd2, 0x51, 0x81, 0x8c,
0xc8, 0x8c, 0x65, 0x19, 0x1a, 0x2f, 0xc7, 0x74, 0x38, 0x5b, 0x0b, 0x7a, 0x3b, 0xdc, 0x5a, 0xc8,
0xdb, 0xad, 0x85, 0xd8, 0x57, 0x2c, 0x80, 0x08, 0x61, 0x65, 0x6b, 0xc6, 0x24, 0x41, 0x22, 0x48,
0xfc, 0x7e, 0x28, 0xba, 0x60, 0xfb, 0x4f, 0xb5, 0x6d, 0x2d, 0xaa, 0x5b, 0x28, 0xf3, 0x7c, 0xd9,
0x81, 0x97, 0x8a, 0x33, 0x8a, 0x40, 0xce, 0x58, 0x15, 0x28, 0x25, 0x0f, 0x51, 0x52, 0xd8, 0x9a,
0x80, 0x16, 0x00, 0x08, 0x7e, 0x78, 0xd5, 0xd5, 0xe8, 0x0d, 0x54, 0xf4, 0x90, 0x3a, 0xd3, 0x12,
0x0e, 0x9f, 0x0c, 0x7e, 0x17, 0xc2, 0x16, 0x5d, 0x1b, 0x2c, 0xda, 0xdd, 0x03, 0x2e, 0xd1, 0x4e,
0x6a, 0x48, 0xea, 0x06, 0x42, 0xaa, 0xb1, 0x06, 0xb7, 0x25, 0x70, 0x5b, 0x8e, 0x34, 0x51, 0x59,
0xe8, 0x96, 0x76, 0x43, 0x3e, 0x2d, 0xcf, 0xa2, 0x88, 0x81, 0xc5, 0x64, 0x54, 0x76, 0xcc, 0x13,
0x85, 0xae, 0xfc, 0xd6, 0x6f, 0xa6, 0x20, 0xc5, 0x40, 0xb8, 0x90, 0xb4, 0x42, 0xb0, 0x4f, 0xfb,
0x00, 0x50, 0x22, 0x20, 0x86, 0x0a, 0x3b, 0x65, 0xa7, 0x88, 0x50, 0x31, 0xd8, 0x32, 0xee, 0xc4,
0xc9, 0x58, 0xa5, 0x1a, 0x54, 0x4c, 0xf0, 0x7c, 0x3b, 0xa8, 0x76, 0x7b, 0xb6, 0x4f, 0xe2, 0x9a,
0x03, 0x4c, 0x8c, 0x6b, 0x84, 0xc7, 0xa4, 0xc7, 0x1a, 0x8d, 0xed, 0x5c, 0xd2, 0x73, 0x09, 0x9b,
0x00, 0x15, 0x56, 0xf1, 0x3e, 0x99, 0xe6, 0x62, 0x9c, 0xe4, 0x64, 0xd8, 0xac, 0xe4, 0xdf, 0xb1,
0xfa, 0x7e, 0x3b, 0xff, 0x5f, 0x3f, 0xff, 0xfc, 0x77, 0x32, 0xec, 0xfc, 0xfc, 0xeb, 0x3f, 0x49,
0x6b, 0x05, 0x19, 0xf5, 0x8d, 0xc7, 0x31, 0xb9, 0x5d, 0x0e, 0x19, 0xff, 0x30, 0xa4, 0x79, 0xe1,
0x4e, 0xf4, 0x6c, 0x2d, 0x74, 0xb5, 0x44, 0x0a, 0xac, 0x6d, 0x2d, 0x02, 0x24, 0x0f, 0x27, 0x76,
0x6b, 0x91, 0xdf, 0x22, 0x75, 0xed, 0x4a, 0xe3, 0x12, 0x8b, 0xac, 0xf0, 0xed, 0xf3, 0x52, 0x14,
0xe8, 0x1f, 0xb8, 0x62, 0x95, 0xfb, 0x1b, 0x42, 0x6d, 0x1f, 0xbc, 0x10, 0x51, 0xb7, 0x55, 0xae,
0x9e, 0x5d, 0x7f, 0x83, 0xd5, 0x1b, 0x6a, 0xf3, 0x4e, 0xf7, 0xce, 0x42, 0x94, 0x9c, 0x40, 0x8b,
0x7c, 0xf8, 0xcd, 0xf1, 0xdb, 0x37, 0xca, 0x5a, 0x11, 0xc8, 0x64, 0xaa, 0xa4, 0x10, 0x62, 0x53,
0xbb, 0x66, 0x10, 0x4e, 0xdd, 0xdc, 0x34, 0x8e, 0xb4, 0x43, 0x9e, 0x31, 0x81, 0xe2, 0xa7, 0x46,
0x44, 0x28, 0x34, 0xd2, 0xc3, 0x55, 0x5a, 0x14, 0x41, 0xd2, 0xb4, 0x94, 0x2d, 0xcc, 0x7a, 0x3d,
0xe6, 0x19, 0x1e, 0x8c, 0xba, 0xaf, 0x41, 0x93, 0xa1, 0x69, 0x4f, 0x37, 0xa3, 0x5c, 0xeb, 0x82,
0x71, 0x5a, 0x75, 0x77, 0x40, 0x33, 0x4e, 0x77, 0x40, 0x17, 0x44, 0x67, 0x60, 0xad, 0x8f, 0x35,
0xc3, 0x7e, 0x6e, 0x8c, 0xf4, 0x6e, 0x6d, 0x8f, 0xb2, 0xde, 0xed, 0xaa, 0xd6, 0x6d, 0x17, 0x22,
0xba, 0x0f, 0x14, 0x41, 0x91, 0x94, 0x08, 0x9a, 0x8d, 0x5d, 0x53, 0xbc, 0xb6, 0xf5, 0xf5, 0xb1,
0xa3, 0xf3, 0x56, 0x4f, 0x9d, 0xe7, 0x2b, 0x49, 0x3a, 0xd2, 0x90, 0x31, 0xc4, 0xaf, 0x37, 0x44,
0x25, 0x81, 0xa0, 0x51, 0xcf, 0xcc, 0x08, 0x55, 0xd0, 0xc4, 0xc7, 0x79, 0x33, 0x50, 0x03, 0x8f,
0xdb, 0x70, 0xa2, 0xc5, 0x41, 0x9c, 0x91, 0x84, 0x48, 0x02, 0xc3, 0xdd, 0xde, 0x5b, 0x2c, 0xbb,
0x6a, 0xd3, 0x29, 0xd0, 0x20, 0x55, 0x2f, 0xbe, 0x41, 0x03, 0x58, 0x75, 0x9b, 0x86, 0x45, 0xf7,
0x05, 0x80, 0x6f, 0x15, 0x47, 0x34, 0x50, 0xde, 0xc2, 0x7f, 0x35, 0xa0, 0x0b, 0xb4, 0x29, 0xda,
0x43, 0x14, 0xdc, 0x55, 0x04, 0xd2, 0x5d, 0xba, 0x54, 0xc2, 0xa1, 0x66, 0x8f, 0x37, 0x19, 0x67,
0x77, 0x03, 0xcb, 0x0b, 0x4d, 0x4a, 0x59, 0xc8, 0xb0, 0x96, 0x6a, 0x69, 0x23, 0xf5, 0xb0, 0x7e,
0x04, 0xc8, 0xef, 0x30, 0x96, 0x2e, 0xf9, 0xa9, 0xfb, 0x1a, 0x67, 0x81, 0x50, 0x36, 0x46, 0x0b,
0x45, 0x47, 0x26, 0x20, 0xbc, 0x6b, 0xdf, 0xd5, 0xff, 0x9d, 0x7d, 0xbd, 0x55, 0x03, 0xb3, 0xdf,
0xdc, 0x40, 0x03, 0x95, 0xbb, 0xad, 0xb3, 0xef, 0x3a, 0xa6, 0xc5, 0x8a, 0x9f, 0xed, 0xf3, 0x48,
0x9b, 0x99, 0x03, 0xd0, 0x73, 0x71, 0x61, 0xf1, 0x8c, 0x03, 0x1e, 0xdd, 0xdd, 0xed, 0x5a, 0x9c,
0x58, 0x8b, 0x97, 0x1c, 0x73, 0xaf, 0xb5, 0x22, 0xe2, 0x21, 0x37, 0xd6, 0xe2, 0xf1, 0x0e, 0x6b,
0xc5, 0x03, 0xd6, 0x8a, 0xae, 0xb5, 0x13, 0x01, 0xb6, 0xd7, 0xe7, 0xfe, 0xb5, 0x13, 0x63, 0xf2,
0xae, 0xbb, 0x45, 0xa9, 0xe9, 0xcd, 0x18, 0xa6, 0xa9, 0x56, 0x46, 0x7b, 0x06, 0x03, 0xac, 0x86,
0x81, 0x39, 0x2d, 0xda, 0xf1, 0x9b, 0x1b, 0x3d, 0x8c, 0x0d, 0x47, 0x7c, 0xc2, 0xeb, 0xec, 0xdb,
0xa3, 0xff, 0x81, 0xd3, 0x6b, 0xa7, 0x63, 0x73, 0x69, 0xb2, 0xea, 0xac, 0x1d, 0x5c, 0xf3, 0x56,
0x06, 0xcd, 0xc6, 0xa9, 0x5c, 0xee, 0xf8, 0x81, 0xc8, 0x1c, 0x8b, 0x0a, 0xc7, 0xe2, 0x45, 0xc3,
0xc4, 0xea, 0x0a, 0x41, 0x5d, 0xa2, 0x10, 0x0c, 0xcc, 0xdf, 0x55, 0x68, 0x3e, 0xa8, 0xf5, 0xcb,
0xe7, 0x6a, 0xe1, 0x08, 0x07, 0xaf, 0x5e, 0xef, 0x2c, 0x54, 0x67, 0x23, 0x6a, 0xda, 0x95, 0xb5,
0x4e, 0x06, 0xac, 0x0a, 0x16, 0xdb, 0x04, 0x73, 0x58, 0xe3, 0xbd, 0x75, 0x06, 0x5a, 0x73, 0x58,
0x36, 0x0e, 0xf3, 0xe5, 0x1c, 0x04, 0xea, 0xd7, 0x3b, 0xcc, 0x5b, 0x87, 0xb9, 0x2d, 0x2e, 0xe2,
0x94, 0xea, 0xae, 0x4d, 0xf0, 0xfc, 0x5a, 0xed, 0xdf, 0x7f, 0x23, 0x9f, 0xbe, 0x64, 0x68, 0xaf,
0x16, 0xee, 0xd3, 0x57, 0xd1, 0xf2, 0x82, 0x66, 0x4a, 0xdd, 0x3f, 0x88, 0xcf, 0x57, 0x22, 0x1b,
0xda, 0x19, 0xf1, 0xf2, 0xd2, 0x4b, 0x53, 0x66, 0x17, 0x4c, 0x1c, 0xbd, 0x0e, 0xc0, 0xe4, 0x1b,
0x95, 0x76, 0xe5, 0x51, 0xf4, 0xc5, 0xca, 0x2a, 0xba, 0xd7, 0xf8, 0xd8, 0xd6, 0x4c, 0xde, 0x81,
0x6f, 0x3b, 0x78, 0x8f, 0xc5, 0x74, 0xf4, 0x04, 0xcd, 0xff, 0x73, 0xd2, 0xa3, 0xc3, 0x27, 0x60,
0x73, 0x3c, 0x7f, 0xfb, 0x03, 0x76, 0x75, 0xe7, 0xcd, 0x0f, 0x77, 0xe8, 0xff, 0x44, 0xf9, 0xdc,
0x15, 0x8f, 0xa7, 0xd0, 0xec, 0xad, 0xb6, 0x1e, 0x87, 0x7c, 0x22, 0xda, 0x93, 0x1e, 0xda, 0xd7,
0x87, 0x79, 0x8c, 0xd9, 0xe5, 0x54, 0x1f, 0x61, 0x0f, 0xa4, 0xed, 0x05, 0x9c, 0xdc, 0xde, 0x66,
0xa7, 0x83, 0xb3, 0x7d, 0xf5, 0x27, 0xd0, 0xdb, 0xea, 0x4c, 0xe4, 0x19, 0x8e, 0xf4, 0x72, 0x68,
0x69, 0x8f, 0x60, 0x33, 0xe7, 0x4a, 0x0a, 0x3b, 0x16, 0xcc, 0xa4, 0xa5, 0x7c, 0x9a, 0x7d, 0x80,
0x1c, 0x97, 0x2f, 0xdf, 0xbc, 0x7e, 0xe5, 0x92, 0x64, 0x22, 0x29, 0x76, 0xe7, 0x0c, 0x7d, 0xf4,
0x36, 0x1f, 0x57, 0x45, 0x48, 0x7a, 0x48, 0x80, 0x9a, 0x25, 0x1e, 0x98, 0x35, 0xa6, 0x88, 0x0c,
0x1d, 0xd3, 0x29, 0xf0, 0xec, 0x8b, 0x5e, 0x33, 0xd5, 0x5b, 0x3b, 0xd3, 0xbe, 0x7c, 0xa6, 0x0e,
0xd3, 0xad, 0xc7, 0xe8, 0x96, 0x66, 0x34, 0x2f, 0x88, 0x3f, 0xf0, 0x77, 0x46, 0xe8, 0x14, 0x24,
0xa4, 0x04, 0x6a, 0x83, 0xa5, 0xe7, 0x11, 0x69, 0xef, 0x71, 0x66, 0x25, 0x9d, 0x44, 0xdb, 0x3f,
0xd5, 0x42, 0x86, 0xcd, 0x85, 0xe1, 0x7c, 0x1e, 0xe0, 0xe8, 0x19, 0x5c, 0xaa, 0x8b, 0xa2, 0x29,
0xed, 0xdb, 0x6b, 0xc1, 0xaa, 0xbf, 0xd3, 0xa3, 0xbd, 0x1d, 0x23, 0x4a, 0x6c, 0xbb, 0x68, 0xd4,
0x92, 0x78, 0x7f, 0xd4, 0x37, 0x8f, 0xf1, 0x4e, 0xf7, 0x1a, 0x50, 0x5d, 0xc9, 0x2c, 0x26, 0x54,
0x9d, 0x11, 0xd5, 0xb5, 0xcf, 0xbe, 0xbe, 0x93, 0xc4, 0x0a, 0xa4, 0xa7, 0xaf, 0x6d, 0xd4, 0xd9,
0xaf, 0x47, 0xfa, 0xe9, 0x64, 0x1a, 0x7c, 0xa8, 0xa0, 0xc6, 0x5f, 0xcc, 0xa9, 0x9c, 0x89, 0x6c,
0x48, 0x90, 0x1a, 0x72, 0xeb, 0x05, 0x72, 0x46, 0xd1, 0x8e, 0x44, 0x31, 0x30, 0x2b, 0xce, 0xc1,
0x83, 0x9a, 0x09, 0xd0, 0xbb, 0x96, 0xa5, 0x3a, 0x85, 0xa8, 0xe6, 0x49, 0xe1, 0x1d, 0x99, 0xb8,
0x56, 0x87, 0xbc, 0x1c, 0xed, 0x36, 0x51, 0x5d, 0xb3, 0x52, 0x86, 0x03, 0xff, 0x72, 0xfe, 0xc2,
0x5c, 0xd8, 0xd2, 0xa0, 0x9e, 0xfb, 0xcb, 0x6b, 0x1c, 0xd3, 0x2c, 0x03, 0x12, 0xa1, 0x3e, 0x8b,
0x83, 0x0f, 0xd6, 0x2f, 0xb9, 0x2a, 0x9a, 0x94, 0xe9, 0x0c, 0x4c, 0xc3, 0xe9, 0xa5, 0xf3, 0xf6,
0xdb, 0x57, 0x27, 0xfa, 0xf7, 0x71, 0x52, 0x26, 0xf3, 0x0a, 0x34, 0xac, 0x10, 0xe4, 0x92, 0x7a,
0x0e, 0xe8, 0xb6, 0xcd, 0x52, 0xf7, 0x40, 0x31, 0x9a, 0x95, 0xf1, 0x68, 0xf6, 0x79, 0x73, 0x47,
0x5d, 0x39, 0x2e, 0x56, 0x76, 0x5e, 0x27, 0x3c, 0x99, 0xd2, 0xd2, 0x1b, 0xf5, 0xf1, 0x8a, 0xf8,
0xed, 0x65, 0xc3, 0x6f, 0x91, 0x22, 0xd4, 0xc6, 0xdc, 0xa8, 0xff, 0x64, 0x9e, 0xfc, 0xfb, 0x6f,
0x39, 0xda, 0x37, 0xac, 0x39, 0xb2, 0xa5, 0x22, 0x17, 0xe5, 0x50, 0x94, 0x09, 0x9f, 0xe2, 0xf4,
0xe9, 0xa6, 0x33, 0xf5, 0x00, 0xf2, 0xf9, 0xa9, 0x66, 0x60, 0x20, 0x3c, 0xe0, 0xe8, 0x2f, 0x37,
0xe1, 0x12, 0xfb, 0x25, 0x8a, 0x89, 0xb9, 0x1d, 0xf9, 0x5a, 0x9f, 0x77, 0x9c, 0xc3, 0xcf, 0x0f,
0x9c, 0xaf, 0x8f, 0x0f, 0x8f, 0x10, 0x9e, 0x97, 0xdf, 0x7b, 0xcd, 0x2d, 0x09, 0xf1, 0xdb, 0x8b,
0x08, 0x1c, 0x93, 0x86, 0x27, 0xcf, 0x9f, 0x12, 0x73, 0x05, 0xe0, 0xef, 0xee, 0xf9, 0x9b, 0x7b,
0xde, 0xda, 0xeb, 0x83, 0x57, 0x6b, 0xaf, 0x7f, 0xa5, 0x11, 0x27, 0xc7, 0x87, 0x9f, 0x36, 0xe2,
0xf5, 0xd1, 0xc9, 0xe1, 0x43, 0x56, 0xbc, 0x3e, 0x3c, 0x39, 0xfa, 0x84, 0x95, 0x7f, 0x5c, 0x7d,
0xef, 0xf9, 0xea, 0xce, 0x49, 0xa3, 0xd3, 0x33, 0x9b, 0x9e, 0xb9, 0x16, 0x02, 0x5d, 0xdd, 0x71,
0x2d, 0x64, 0xe5, 0x38, 0x88, 0x73, 0x89, 0xb2, 0xf7, 0x06, 0x65, 0x8f, 0x62, 0x75, 0x36, 0x03,
0xa6, 0x1e, 0xc5, 0xa3, 0x8c, 0x5d, 0x74, 0xcf, 0x6b, 0x9a, 0x05, 0xe0, 0x0f, 0x86, 0xe3, 0xf7,
0x7e, 0xe7, 0x7e, 0xa7, 0xbd, 0x63, 0x42, 0xeb, 0xd0, 0x42, 0x58, 0x13, 0x18, 0x51, 0x67, 0x25,
0xbd, 0x40, 0xb3, 0x50, 0x44, 0x5a, 0x14, 0xaf, 0x5e, 0x2c, 0x73, 0x21, 0x1d, 0xdd, 0xa7, 0x04,
0xea, 0xd8, 0x77, 0x0c, 0x38, 0x54, 0xce, 0x88, 0xc5, 0x27, 0xc9, 0x05, 0x55, 0x70, 0x70, 0xa4,
0x70, 0xec, 0xd7, 0x1e, 0xf6, 0x17, 0xea, 0xd8, 0x1b, 0x96, 0x2a, 0x50, 0xb7, 0xf6, 0xa6, 0x60,
0xda, 0xfb, 0x36, 0x5d, 0x2f, 0x4e, 0xa7, 0x22, 0x94, 0x1f, 0x16, 0x80, 0xf3, 0xa4, 0x04, 0xfb,
0x0d, 0x9d, 0xa4, 0x96, 0x22, 0x5c, 0xc1, 0xa8, 0x54, 0xdb, 0xdd, 0xaa, 0xd8, 0x6e, 0x4e, 0x27,
0x72, 0xa8, 0x45, 0x1d, 0x3b, 0x52, 0xb2, 0xe9, 0xcc, 0x0e, 0xad, 0x60, 0x40, 0x22, 0x76, 0x72,
0xd6, 0x54, 0xe8, 0xa8, 0x8f, 0x67, 0xf5, 0xfb, 0x05, 0xd7, 0x9b, 0xa8, 0xf9, 0xdd, 0x87, 0x10,
0x09, 0x7f, 0x61, 0x72, 0xda, 0xac, 0x68, 0xcd, 0x99, 0xcd, 0x0a, 0x1e, 0xcc, 0x0f, 0x25, 0xaf,
0x55, 0xdb, 0x41, 0xa5, 0xbb, 0x73, 0x70, 0xee, 0x6b, 0x6f, 0x96, 0xac, 0x40, 0x4c, 0xd6, 0x70,
0x98, 0xd6, 0xd4, 0xa7, 0xa8, 0x06, 0x3b, 0x04, 0xa7, 0xa5, 0xda, 0x18, 0x4c, 0x82, 0x6c, 0x5b,
0xf7, 0x00, 0xbf, 0x36, 0x5f, 0x6a, 0xfa, 0x15, 0x98, 0x71, 0xbf, 0x88, 0x1e, 0x93, 0xb0, 0x4d,
0xb4, 0x2b, 0xb0, 0xc8, 0x76, 0x3d, 0x8f, 0xf4, 0x46, 0x64, 0xbf, 0xdb, 0x08, 0x05, 0x4d, 0xd0,
0x2f, 0xf8, 0x07, 0xcc, 0xad, 0xf8, 0xf3, 0x17, 0x10, 0xaf, 0xdf, 0xfd, 0x50, 0x41, 0x57, 0x3e,
0x24, 0x54, 0x17, 0x27, 0x6a, 0x67, 0xa2, 0x41, 0x51, 0x52, 0xf5, 0x9d, 0xe3, 0xb9, 0x01, 0x81,
0xab, 0x3e, 0xcf, 0x9c, 0x4c, 0x02, 0x7d, 0x43, 0xf6, 0x1d, 0xf0, 0x91, 0x31, 0x79, 0xed, 0x7a,
0xea, 0x13, 0x09, 0x46, 0xab, 0x7a, 0x3c, 0x67, 0xea, 0x0b, 0xc9, 0xc6, 0xa8, 0x6f, 0xbf, 0xe5,
0x8d, 0xf4, 0xca, 0xf1, 0xef, 0xd9, 0x5c, 0x7d, 0x02, 0x74, 0xea, 0x32, 0x77, 0xcd, 0x11, 0x3a,
0x48, 0x71, 0xae, 0xf6, 0x42, 0x08, 0x6a, 0x01, 0x54, 0x01, 0xda, 0xac, 0x78, 0xa4, 0x3e, 0xfd,
0xa8, 0x66, 0x0b, 0x5e, 0x45, 0x04, 0x5b, 0x11, 0x8a, 0x40, 0xb5, 0x91, 0x1b, 0x0e, 0xc3, 0x6f,
0xdb, 0x50, 0xda, 0x42, 0x39, 0x99, 0x10, 0xc7, 0x6c, 0x3e, 0x11, 0x29, 0xd0, 0x82, 0x12, 0xcc,
0x33, 0x16, 0x80, 0x37, 0x94, 0xf9, 0xca, 0x6e, 0xa5, 0x40, 0x61, 0xd2, 0xf2, 0x89, 0x14, 0x05,
0x12, 0x40, 0xe2, 0x8d, 0xee, 0xa0, 0x2a, 0xb6, 0x67, 0x90, 0xb3, 0x6c, 0xbe, 0x42, 0xbf, 0x4b,
0x6e, 0x7f, 0xa9, 0x8c, 0x59, 0x92, 0xb1, 0xc9, 0x72, 0x33, 0x67, 0xe3, 0x9e, 0x49, 0xcf, 0xd4,
0xa4, 0x67, 0x49, 0x7a, 0xbe, 0x9c, 0xb7, 0xb2, 0x8a, 0xb1, 0x97, 0xd8, 0xd2, 0x6b, 0x45, 0x4a,
0x18, 0x58, 0x15, 0x09, 0xd7, 0x5e, 0xe7, 0x55, 0x55, 0xa7, 0x64, 0x95, 0xd6, 0xa7, 0x25, 0xa5,
0x3c, 0xb4, 0xf9, 0x1c, 0x72, 0x81, 0x64, 0xc6, 0xdb, 0x9f, 0xed, 0x0d, 0x06, 0x83, 0x2f, 0x42,
0xe7, 0x60, 0xf5, 0x2b, 0x12, 0x54, 0x67, 0x9b, 0x2a, 0x23, 0x50, 0x18, 0x3b, 0x5d, 0xbd, 0x0a,
0x1b, 0xab, 0x7a, 0x4b, 0x9a, 0xad, 0x69, 0xdd, 0xd8, 0xfe, 0xec, 0xc9, 0xe3, 0xc7, 0x8f, 0x95,
0xd6, 0x3a, 0xcf, 0x34, 0x75, 0xa8, 0xe4, 0xac, 0x32, 0x4a, 0x60, 0xb5, 0xdb, 0xa0, 0xa8, 0xd8,
0xaa, 0x15, 0x80, 0xfd, 0x78, 0xa3, 0xf9, 0xbc, 0xd5, 0x40, 0x3a, 0x08, 0x82, 0x8e, 0x98, 0x49,
0xa5, 0xfe, 0x76, 0xf6, 0x1a, 0x34, 0x94, 0xa8, 0xbd, 0xca, 0xbe, 0x56, 0x1c, 0xf9, 0xdf, 0x08,
0x2f, 0x42, 0xa1, 0x80, 0x84, 0x65, 0x14, 0xd8, 0x14, 0xf2, 0xd4, 0x27, 0xf5, 0x7f, 0x03, 0x41,
0x4b, 0x82, 0x4d, 0x68, 0x1f, 0x00, 0x00
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0xed, 0x72, 0xdb, 0xc6,
0x15, 0xfd, 0xaf, 0xa7, 0x80, 0x36, 0xae, 0x04, 0x0c, 0x21, 0x90, 0x8a, 0x93, 0x19, 0x9b, 0x20,
0xa0, 0xda, 0xb2, 0x13, 0xab, 0xb5, 0x23, 0x4d, 0x64, 0x27, 0xe9, 0x28, 0xaa, 0x0d, 0x11, 0x4b,
0x12, 0x36, 0xb8, 0x8b, 0x00, 0x0b, 0x7d, 0x94, 0xd2, 0x5b, 0xf4, 0x7f, 0x3a, 0xed, 0x2b, 0xf4,
0xc1, 0xfa, 0x08, 0x3d, 0x77, 0x77, 0x01, 0x82, 0xb4, 0x24, 0x27, 0x9d, 0x74, 0xda, 0x3f, 0x12,
0xb8, 0xb8, 0x7b, 0xf7, 0x7e, 0x9c, 0x7b, 0xf6, 0xee, 0x62, 0xb4, 0xf9, 0xec, 0x70, 0xff, 0xf5,
0x9f, 0x8e, 0x9e, 0x3b, 0x33, 0x35, 0xcf, 0xe3, 0x91, 0xfd, 0xcb, 0x93, 0xd4, 0xc9, 0x13, 0x31,
0x8d, 0x18, 0x17, 0x2c, 0x1e, 0xcd, 0xb9, 0x4a, 0x9c, 0xf1, 0x2c, 0x29, 0x2b, 0xae, 0x22, 0x56,
0xab, 0xc9, 0xce, 0xa3, 0x66, 0x74, 0x43, 0x24, 0x73, 0x1e, 0xb1, 0xf3, 0x8c, 0x5f, 0x14, 0xb2,
0x54, 0xcc, 0x19, 0x4b, 0xa1, 0xb8, 0x80, 0xd8, 0x45, 0x96, 0xaa, 0x59, 0xf4, 0xe5, 0x60, 0xd0,
0x8a, 0xae, 0xbd, 0x4a, 0xf9, 0x79, 0x36, 0xe6, 0x3b, 0xfa, 0x87, 0x9f, 0x89, 0x4c, 0x65, 0x49,
0xbe, 0x53, 0x8d, 0x93, 0x9c, 0x47, 0xbb, 0xfe, 0x3c, 0xb9, 0xcc, 0xe6, 0xf5, 0xbc, 0xfd, 0x5d,
0x57, 0xbc, 0xd4, 0x3f, 0x92, 0x33, 0xfc, 0x16, 0x92, 0x7d, 0xb4, 0x72, 0x3c, 0x52, 0x99, 0xca,
0x79, 0xfc, 0x06, 0x92, 0x73, 0x99, 0x3a, 0xc7, 0x5c, 0xa9, 0x4c, 0x4c, 0xab, 0x51, 0xdf, 0x8c,
0x8f, 0xaa, 0x71, 0x99, 0x15, 0x2a, 0xde, 0x38, 0x4f, 0x4a, 0x27, 0x8d, 0x52, 0x39, 0xae, 0xe7,
0xb0, 0x26, 0x4c, 0x03, 0xac, 0xf5, 0x76, 0x5a, 0x64, 0x32, 0x7a, 0xf8, 0xd8, 0x4f, 0x83, 0x7a,
0xfe, 0xb6, 0x88, 0x4e, 0x4e, 0xf1, 0x54, 0x56, 0xe7, 0xa9, 0x7d, 0x92, 0x46, 0xe0, 0xe4, 0x34,
0xa4, 0xd9, 0xf2, 0x42, 0xf0, 0xd2, 0xcf, 0xe5, 0x38, 0x2b, 0xfc, 0xba, 0x94, 0x17, 0x95, 0x5f,
0xcf, 0xf7, 0x27, 0xd3, 0x68, 0x71, 0xe3, 0x17, 0x99, 0xa8, 0x68, 0x0e, 0xfe, 0x1f, 0xd2, 0x7f,
0x08, 0x45, 0x9b, 0xbb, 0xe1, 0xa4, 0x16, 0x63, 0x95, 0x49, 0xe1, 0x4c, 0x0f, 0x52, 0x97, 0x7b,
0x8b, 0x92, 0xab, 0xba, 0x14, 0x4e, 0x1a, 0x4c, 0xb9, 0x7a, 0x9e, 0x73, 0x32, 0xe4, 0xe9, 0x95,
0x7e, 0x75, 0xd3, 0x8a, 0x66, 0xd5, 0x61, 0x47, 0x94, 0x6f, 0x6d, 0x31, 0x79, 0xf6, 0x9e, 0x8f,
0x15, 0x8b, 0x22, 0x75, 0x55, 0x70, 0x39, 0xa1, 0xb1, 0xcd, 0x27, 0x65, 0x99, 0x5c, 0x05, 0x59,
0xa5, 0xff, 0xaf, 0xcc, 0x7f, 0xe1, 0x7a, 0x8b, 0x8b, 0x4c, 0xa4, 0xf2, 0x22, 0x90, 0x05, 0x17,
0x2e, 0x9b, 0x29, 0x55, 0x54, 0xc3, 0x7e, 0x7f, 0x9a, 0xa9, 0x59, 0x7d, 0x16, 0x8c, 0xe5, 0xbc,
0xff, 0x4a, 0x4a, 0xf1, 0x4a, 0xa6, 0x75, 0xce, 0xab, 0xfe, 0xf7, 0x2f, 0x9f, 0x3f, 0xeb, 0x5f,
0x64, 0x1f, 0xb2, 0x7e, 0x13, 0xba, 0xcf, 0x6a, 0x13, 0xcb, 0x9d, 0xca, 0x0e, 0xb0, 0x8e, 0xfa,
0xa7, 0xeb, 0xea, 0xfb, 0xad, 0x94, 0xcf, 0xde, 0x56, 0x3c, 0x9f, 0x74, 0xa5, 0x73, 0x99, 0xa4,
0x7f, 0x38, 0x76, 0xb9, 0xaf, 0xa2, 0xcd, 0x81, 0xb7, 0xc8, 0xb9, 0x72, 0x44, 0x94, 0x06, 0xe3,
0x92, 0x27, 0x8a, 0xdb, 0x08, 0xb8, 0xcc, 0xa4, 0x88, 0x79, 0xa1, 0x08, 0xa0, 0xec, 0x89, 0x52,
0x65, 0x76, 0x56, 0x2b, 0x8e, 0x17, 0xe5, 0x98, 0xf9, 0xdc, 0xf3, 0xd7, 0xc7, 0x29, 0x10, 0x58,
0x4e, 0xf1, 0x4b, 0xd5, 0x7f, 0x9f, 0x9c, 0x27, 0x8d, 0x82, 0x8f, 0x04, 0x93, 0xea, 0x4a, 0x40,
0x85, 0xf2, 0x90, 0xcd, 0x33, 0x99, 0x5e, 0x05, 0x49, 0x01, 0xa3, 0xd3, 0xfd, 0x59, 0x96, 0xa7,
0xae, 0x20, 0xf9, 0x24, 0x4d, 0x9f, 0x9f, 0xc3, 0x8a, 0x97, 0x59, 0x05, 0x94, 0xf2, 0xd2, 0x65,
0x64, 0x33, 0xf3, 0x5d, 0x2f, 0x8a, 0x17, 0x5f, 0x73, 0xf5, 0x9d, 0xeb, 0x85, 0x13, 0x59, 0xba,
0x64, 0x3a, 0x8f, 0x06, 0x21, 0x1f, 0x19, 0x84, 0x04, 0x39, 0x17, 0x53, 0x35, 0x0b, 0x79, 0xaf,
0xe7, 0x51, 0xf6, 0x83, 0xa2, 0xae, 0x66, 0xae, 0x79, 0x77, 0xc2, 0x4f, 0x3d, 0x0d, 0x05, 0x33,
0xc8, 0x68, 0x0c, 0xde, 0xed, 0xec, 0x46, 0x91, 0x01, 0xda, 0xc9, 0xe0, 0x74, 0x6b, 0xcb, 0x3c,
0x06, 0xd5, 0x2c, 0x9b, 0x28, 0xd7, 0xbb, 0xb9, 0xdd, 0x18, 0x5e, 0x96, 0xb2, 0x44, 0x0c, 0x60,
0x0c, 0xea, 0xa8, 0x92, 0x39, 0x0f, 0x72, 0x39, 0x75, 0xd9, 0x73, 0x1a, 0x77, 0x6c, 0x84, 0x11,
0x7d, 0x67, 0x92, 0xe5, 0x5c, 0xc7, 0x0a, 0x85, 0x53, 0x22, 0xa6, 0x2f, 0xed, 0x38, 0xf0, 0x82,
0x89, 0x93, 0x6c, 0x5a, 0x97, 0x89, 0x4e, 0x89, 0x89, 0x95, 0x33, 0x49, 0x30, 0x21, 0x0d, 0x7e,
0x14, 0x07, 0x02, 0x88, 0x28, 0xe0, 0x1e, 0x77, 0x8a, 0x64, 0xca, 0x9d, 0x34, 0x51, 0xc9, 0x26,
0x72, 0xd8, 0xc9, 0xe2, 0x31, 0x72, 0xce, 0x68, 0x81, 0x21, 0x40, 0x68, 0x93, 0x0f, 0x84, 0x6b,
0x7d, 0x41, 0x51, 0x4a, 0x25, 0xc7, 0x32, 0xdf, 0xda, 0x72, 0x35, 0xea, 0x07, 0xbe, 0xab, 0x4b,
0x24, 0x22, 0x89, 0xfc, 0x58, 0xc9, 0x12, 0x5a, 0x09, 0xf0, 0x07, 0x8a, 0xcf, 0x29, 0xba, 0xe3,
0x83, 0x82, 0x79, 0xde, 0xf5, 0xb5, 0x15, 0xc3, 0xfc, 0x79, 0x01, 0x83, 0xbf, 0x82, 0x7e, 0x07,
0xa0, 0xe4, 0x81, 0x73, 0x94, 0xf3, 0xa4, 0xe2, 0x0e, 0x02, 0xc1, 0x4b, 0x87, 0xf0, 0xe9, 0x1c,
0x1c, 0xc1, 0x24, 0x7f, 0x45, 0x63, 0xb5, 0xaa, 0xd1, 0xd4, 0xa5, 0xe7, 0x41, 0x2a, 0x85, 0xbd,
0xdd, 0x7a, 0xfa, 0xaa, 0x5b, 0x4f, 0x51, 0x14, 0xf5, 0x50, 0x40, 0x7c, 0x33, 0x8a, 0xdc, 0xc1,
0xf5, 0x6a, 0xe1, 0x1d, 0xdc, 0x26, 0x18, 0x7d, 0x24, 0x08, 0x5f, 0x8e, 0x90, 0x71, 0x12, 0xce,
0x26, 0xae, 0xa9, 0x57, 0x8f, 0x30, 0x42, 0x19, 0x52, 0x27, 0xc2, 0x97, 0xa7, 0x88, 0xfa, 0xa1,
0xae, 0xda, 0x00, 0x4e, 0x94, 0x19, 0x27, 0x61, 0xcf, 0x0a, 0x4b, 0xcf, 0xd3, 0x4c, 0x12, 0x09,
0xbf, 0xd1, 0x24, 0xbd, 0x90, 0xe7, 0xf0, 0x18, 0x12, 0x0c, 0xb8, 0x41, 0x94, 0x45, 0x50, 0xf2,
0x22, 0x4f, 0xc6, 0xc0, 0xf0, 0xc9, 0x29, 0xa0, 0xce, 0xbc, 0xa0, 0xaa, 0xcf, 0x2a, 0x55, 0xba,
0x3b, 0x0f, 0xb5, 0xa6, 0x55, 0x02, 0x90, 0xc6, 0x00, 0x62, 0x29, 0x05, 0x90, 0xaa, 0x91, 0x6c,
0xf0, 0xa9, 0x80, 0x4f, 0x79, 0xa2, 0x4e, 0xe3, 0x68, 0x80, 0x0c, 0x2d, 0x91, 0x4a, 0x63, 0x5d,
0x90, 0x6a, 0x93, 0x3c, 0x6b, 0x87, 0xfc, 0x48, 0xfa, 0x4e, 0xd1, 0xbb, 0x4c, 0xb9, 0xc5, 0x8c,
0xd6, 0x5b, 0x5a, 0xba, 0x13, 0x77, 0xec, 0x01, 0xfb, 0x49, 0xb1, 0x8c, 0x3d, 0x83, 0x9b, 0x80,
0x2e, 0xdb, 0x6c, 0x09, 0x6f, 0x8f, 0xb1, 0x21, 0x6f, 0x23, 0xd2, 0x3f, 0xf9, 0xf1, 0xfb, 0xb7,
0xa7, 0xfd, 0xa9, 0xcf, 0x1c, 0x84, 0xa5, 0x1d, 0x75, 0xff, 0xfc, 0xe3, 0xc5, 0x62, 0xf7, 0xc6,
0xbb, 0x76, 0x7f, 0xac, 0x7a, 0xe6, 0x11, 0x32, 0xa8, 0x1c, 0x1e, 0x28, 0xf9, 0x06, 0x75, 0x5f,
0xee, 0x03, 0x55, 0xae, 0xd7, 0x59, 0x1a, 0xf5, 0xf6, 0x55, 0xc6, 0x41, 0x05, 0x20, 0x28, 0x1f,
0x79, 0x03, 0x67, 0xb7, 0x39, 0x15, 0x9e, 0xb7, 0xd0, 0x2c, 0xdf, 0x8b, 0xb6, 0x47, 0xb3, 0xd2,
0x19, 0xe7, 0x49, 0x55, 0x45, 0xac, 0x9a, 0xe7, 0x2c, 0xde, 0xf6, 0x59, 0x2d, 0x3e, 0x08, 0x04,
0x02, 0xa9, 0x8a, 0xd4, 0xf5, 0x35, 0x0f, 0x32, 0x31, 0xce, 0xeb, 0x14, 0x89, 0x66, 0x43, 0x46,
0xe0, 0xb6, 0x53, 0xdf, 0x8d, 0x8a, 0x78, 0x54, 0xc7, 0x0f, 0x16, 0x8d, 0x97, 0xca, 0xbb, 0x19,
0xf5, 0xeb, 0x78, 0xd4, 0x2f, 0xe2, 0x77, 0x86, 0x59, 0x0c, 0x6a, 0xa4, 0x9f, 0xdf, 0x82, 0x1a,
0x18, 0x71, 0xff, 0x4a, 0x7b, 0x1d, 0x17, 0xa0, 0xc2, 0x1b, 0x2e, 0x7f, 0xf7, 0xf0, 0xbe, 0xa7,
0xf4, 0xe8, 0xcd, 0xed, 0xa9, 0x12, 0x4b, 0xd4, 0xe4, 0x48, 0x57, 0x3e, 0x12, 0x4d, 0xba, 0x72,
0xa4, 0x6b, 0x35, 0x38, 0x27, 0xf9, 0xa9, 0x0f, 0x0a, 0xd7, 0x49, 0x5f, 0xd0, 0x8c, 0xcc, 0xaf,
0x9a, 0xfc, 0x88, 0xb0, 0xba, 0xc8, 0xd4, 0x78, 0xe6, 0x56, 0xde, 0x62, 0x8c, 0x18, 0xb3, 0x33,
0x09, 0xa2, 0x4a, 0x04, 0x1b, 0x22, 0x60, 0xe3, 0x19, 0x1f, 0x7f, 0x38, 0x93, 0x97, 0xcc, 0xcf,
0xa2, 0xed, 0xf3, 0x24, 0xaf, 0xb1, 0x7b, 0xab, 0xb2, 0xe6, 0x6c, 0xbb, 0xe7, 0x8a, 0x3d, 0x74,
0x0e, 0xf4, 0x9e, 0xa7, 0x30, 0x16, 0x14, 0x79, 0x86, 0x8d, 0xe1, 0x43, 0xa8, 0x75, 0x88, 0x7a,
0x7e, 0xc6, 0x4b, 0x36, 0xcc, 0xa2, 0x77, 0x76, 0xd6, 0x83, 0x85, 0xb8, 0x61, 0xef, 0x7c, 0x5b,
0x21, 0x91, 0xea, 0x54, 0xc4, 0x9e, 0x9b, 0x21, 0x4d, 0x0e, 0xb6, 0xf4, 0x88, 0x7d, 0x39, 0x60,
0xce, 0x3c, 0x13, 0x11, 0xdb, 0xd9, 0x65, 0x6d, 0xd6, 0xd8, 0x36, 0xcc, 0x65, 0x99, 0xc0, 0x26,
0x31, 0xd4, 0xa2, 0x20, 0xd8, 0x22, 0x62, 0x89, 0xb8, 0x6a, 0x65, 0x2e, 0x2f, 0x73, 0xb6, 0x6d,
0x2d, 0x48, 0xf9, 0x24, 0xa9, 0x73, 0x45, 0xf6, 0xd3, 0x26, 0x43, 0xb6, 0xaf, 0x58, 0x81, 0xe9,
0x57, 0x68, 0x48, 0x4c, 0x4b, 0x33, 0xfc, 0xfc, 0xcb, 0x41, 0x71, 0x19, 0xb2, 0x77, 0x37, 0x88,
0x70, 0x93, 0x77, 0x67, 0x25, 0xe5, 0x0e, 0xcc, 0x6e, 0x03, 0x11, 0x45, 0xd5, 0x5e, 0x0b, 0x8f,
0x4c, 0x14, 0xb5, 0x72, 0x28, 0x90, 0x11, 0x9b, 0x65, 0x69, 0x8a, 0xce, 0xcb, 0x31, 0x2d, 0xce,
0x83, 0x05, 0xbf, 0x19, 0x3e, 0x58, 0xa8, 0x9b, 0x07, 0x0b, 0xb9, 0x47, 0x2c, 0x80, 0x08, 0x61,
0x65, 0x6b, 0xc6, 0x24, 0x41, 0x22, 0x58, 0xfc, 0x6e, 0x28, 0xbb, 0x60, 0xfb, 0x4f, 0xb5, 0x3d,
0x58, 0x54, 0x37, 0x50, 0xe6, 0xf9, 0xaa, 0x03, 0x2f, 0x8a, 0x33, 0x8a, 0x40, 0xcd, 0xb2, 0x2a,
0x20, 0x25, 0xf7, 0x51, 0x52, 0xd8, 0x9a, 0x80, 0x16, 0x00, 0x08, 0xbe, 0x7f, 0xd5, 0xd5, 0xe8,
0x0d, 0x28, 0x7a, 0x48, 0x9d, 0xe9, 0x09, 0x87, 0x8f, 0x07, 0xbf, 0x0b, 0x61, 0x8b, 0xd9, 0x75,
0xa3, 0x9d, 0x5d, 0xe0, 0x12, 0xfd, 0xa4, 0x86, 0xa4, 0x6e, 0x20, 0x14, 0x8d, 0x35, 0xb8, 0x2d,
0x81, 0xdb, 0x72, 0xa4, 0x89, 0xca, 0x42, 0xb7, 0xb4, 0x1b, 0xf2, 0x49, 0x79, 0x1a, 0x45, 0xb4,
0x2b, 0xa9, 0xa8, 0xec, 0x98, 0x27, 0x0b, 0x5d, 0xf9, 0xad, 0xdf, 0x39, 0x41, 0x2a, 0x07, 0xe1,
0x42, 0xd2, 0x0a, 0xc1, 0x3e, 0xed, 0x03, 0x40, 0x89, 0x80, 0x18, 0x2a, 0xec, 0x94, 0x1d, 0x11,
0x21, 0x31, 0xd8, 0x32, 0xee, 0xcc, 0x49, 0xb3, 0x8a, 0x3a, 0x54, 0x4c, 0xf0, 0x7c, 0x3b, 0x48,
0xbb, 0x7d, 0xbe, 0xc7, 0xe2, 0x5a, 0x00, 0x4c, 0x99, 0xd0, 0x08, 0x8f, 0x59, 0x2f, 0x6f, 0x34,
0xb6, 0x73, 0x59, 0xcf, 0x65, 0xd9, 0x04, 0xa8, 0xb0, 0x8a, 0xf7, 0xd8, 0x34, 0x97, 0x67, 0x49,
0xce, 0x86, 0xcd, 0x4a, 0xfe, 0x2d, 0xab, 0xef, 0xb5, 0xf3, 0xff, 0xf5, 0xf3, 0xcf, 0x7f, 0x67,
0xc3, 0xce, 0xcf, 0xbf, 0xfe, 0x93, 0xb5, 0x56, 0xb0, 0x51, 0xdf, 0x78, 0x1c, 0xb3, 0x9b, 0xe5,
0x90, 0xf1, 0x0f, 0x43, 0x9a, 0x17, 0x6e, 0x45, 0xcf, 0x83, 0x85, 0xae, 0x96, 0x88, 0xc0, 0xda,
0xd6, 0x22, 0x40, 0x72, 0x7f, 0x62, 0x01, 0xfa, 0x1b, 0xa4, 0xae, 0x5d, 0xe9, 0xac, 0xc4, 0x22,
0x2b, 0x7c, 0xfb, 0xac, 0x94, 0x05, 0xfa, 0x07, 0x41, 0xac, 0x72, 0x77, 0x43, 0xa8, 0xed, 0x83,
0x17, 0x32, 0xea, 0xf6, 0xca, 0xd5, 0xd3, 0xab, 0x6f, 0xb0, 0x7a, 0x43, 0x6d, 0xde, 0xc9, 0xee,
0x69, 0x88, 0x92, 0x93, 0xe8, 0x91, 0x0f, 0xbe, 0x39, 0x7a, 0xf3, 0x9a, 0xac, 0x95, 0x81, 0x4a,
0xa6, 0x24, 0x85, 0x10, 0x9b, 0xda, 0x35, 0x83, 0x70, 0xea, 0xfa, 0xba, 0x71, 0xa4, 0x1d, 0xf2,
0x8c, 0x09, 0x1c, 0x3f, 0x35, 0x22, 0x42, 0xa9, 0x91, 0x1e, 0xae, 0xd2, 0xa2, 0x0c, 0x92, 0xa6,
0xa5, 0x6c, 0x61, 0xd6, 0xeb, 0xe5, 0x9e, 0xe1, 0xc1, 0xa8, 0xfb, 0x1a, 0x34, 0x19, 0x9a, 0xf6,
0x74, 0x33, 0xca, 0xb4, 0x2e, 0x18, 0xa7, 0x55, 0x77, 0x07, 0x34, 0xe3, 0x74, 0x07, 0x74, 0x41,
0x74, 0x06, 0xd6, 0xfa, 0x58, 0x33, 0xec, 0x67, 0xc6, 0x48, 0xef, 0xc6, 0xf6, 0x28, 0xeb, 0xdd,
0x2e, 0xb5, 0x6e, 0x3b, 0x10, 0xd1, 0x7d, 0xa0, 0x0c, 0x8a, 0xa4, 0x44, 0xd0, 0x6c, 0xec, 0x9a,
0xe2, 0xb5, 0xad, 0xaf, 0x8f, 0x1d, 0x5d, 0xb4, 0x7a, 0xea, 0x3c, 0x5f, 0x49, 0xd2, 0xa1, 0x86,
0x8c, 0x21, 0x7e, 0xbd, 0x21, 0x92, 0x04, 0x82, 0xc6, 0x3d, 0x33, 0x23, 0xa4, 0xa0, 0xc9, 0x8f,
0xf3, 0x66, 0xa0, 0x06, 0x1e, 0xb7, 0xe1, 0x44, 0x8b, 0x83, 0x38, 0x23, 0x09, 0x91, 0x02, 0x86,
0xbb, 0xbd, 0xb7, 0x5c, 0x76, 0xd5, 0xa6, 0x53, 0xe0, 0xc1, 0x98, 0x5e, 0x7c, 0x83, 0x06, 0xb0,
0xea, 0x36, 0x0d, 0x8b, 0xee, 0x0b, 0x00, 0xdf, 0x2a, 0x8e, 0x78, 0x40, 0xde, 0xc2, 0x7f, 0x1a,
0xd0, 0x05, 0xda, 0x14, 0xed, 0x01, 0x0a, 0xee, 0x32, 0x02, 0xe9, 0x2e, 0x5d, 0x2a, 0xe1, 0x50,
0xb3, 0xc7, 0x9b, 0x8c, 0xe7, 0xb7, 0x03, 0xcb, 0x0b, 0x4d, 0x4a, 0xf3, 0x30, 0xc7, 0x5a, 0x50,
0x8b, 0x47, 0xaa, 0xb6, 0xb5, 0x23, 0x40, 0x76, 0x8b, 0xb1, 0x7c, 0xc9, 0x4f, 0xdd, 0xd7, 0x38,
0x0b, 0x84, 0xaa, 0x31, 0x5a, 0x12, 0x1d, 0x99, 0x80, 0x88, 0xae, 0x7d, 0x97, 0xff, 0x77, 0xf6,
0xf5, 0x56, 0x0d, 0x4c, 0x7f, 0x73, 0x03, 0x0d, 0x54, 0x6e, 0xb7, 0xce, 0xbe, 0xeb, 0x98, 0x16,
0x13, 0x3f, 0xdb, 0xe7, 0x91, 0x36, 0x33, 0x03, 0xa0, 0xe7, 0xf2, 0xdc, 0xe2, 0x19, 0x07, 0x3c,
0xbe, 0xb3, 0xd3, 0xb5, 0x38, 0xb1, 0x16, 0x2f, 0x39, 0xe6, 0x4e, 0x6b, 0x65, 0x24, 0x42, 0x61,
0xac, 0xc5, 0xe3, 0x2d, 0xd6, 0xca, 0x7b, 0xac, 0x95, 0x5d, 0x6b, 0x27, 0x12, 0x6c, 0xaf, 0x0f,
0xfe, 0x6b, 0x27, 0xc6, 0xe4, 0x6d, 0x77, 0x8b, 0xa2, 0xe9, 0xcd, 0x18, 0xa6, 0x51, 0x2b, 0xa3,
0x3d, 0x83, 0x01, 0x56, 0xc3, 0xc0, 0x9c, 0x16, 0xed, 0xf8, 0xf5, 0xb5, 0x1e, 0xc6, 0x86, 0x23,
0x3f, 0xe1, 0x75, 0xfa, 0xed, 0xe1, 0xff, 0xc0, 0xe9, 0xb5, 0xd3, 0xb1, 0xb9, 0x35, 0x59, 0x75,
0xd6, 0x0e, 0xae, 0x79, 0xab, 0x82, 0x66, 0xe3, 0x24, 0x97, 0x3b, 0x7e, 0x20, 0x32, 0x47, 0xb2,
0xc2, 0xb1, 0x78, 0xd1, 0x30, 0x31, 0x5d, 0x21, 0xd0, 0x2d, 0x0a, 0xc3, 0xc0, 0xfc, 0x6d, 0x85,
0xe6, 0x83, 0x5b, 0xbf, 0x7c, 0x41, 0x0b, 0x47, 0x38, 0x78, 0xf5, 0x7a, 0xa7, 0x21, 0x9d, 0x8d,
0xb8, 0x69, 0x57, 0xd6, 0x3a, 0x19, 0xb0, 0x2a, 0x58, 0x6c, 0x13, 0xcc, 0x61, 0x8d, 0xf7, 0xd6,
0x19, 0x68, 0xcd, 0x61, 0xd5, 0x38, 0x2c, 0x96, 0x73, 0x10, 0xa8, 0x5f, 0xef, 0xb0, 0x68, 0x1d,
0x16, 0xb6, 0xb8, 0x98, 0x53, 0xd2, 0x65, 0x9b, 0x14, 0xf9, 0x15, 0xed, 0xdf, 0x7f, 0x63, 0x9f,
0xbe, 0x64, 0x68, 0xaf, 0x16, 0xee, 0xd2, 0x57, 0xf1, 0xf2, 0x9c, 0xa7, 0xa4, 0xee, 0x1f, 0xcc,
0x17, 0x2b, 0x91, 0x0d, 0xed, 0x8c, 0x78, 0x79, 0xeb, 0xa5, 0x29, 0xb3, 0x0b, 0x26, 0x81, 0x5e,
0x07, 0x60, 0xf2, 0x8d, 0x4a, 0xbb, 0xf2, 0x28, 0xfa, 0x62, 0x65, 0x15, 0xdd, 0x6b, 0x7c, 0x6c,
0x6b, 0xaa, 0x6e, 0xc1, 0xb7, 0x1d, 0xbc, 0xc3, 0x62, 0x3e, 0x7a, 0x8c, 0xe6, 0xff, 0x19, 0xeb,
0xf1, 0xe1, 0x63, 0xb0, 0x39, 0x9e, 0xbf, 0xfd, 0x01, 0xbb, 0xba, 0xf3, 0xfa, 0x87, 0x5b, 0xf4,
0x7f, 0xa2, 0x7c, 0x6e, 0x8b, 0xc7, 0x13, 0x68, 0xf6, 0x56, 0x5b, 0x8f, 0x03, 0x31, 0x91, 0xed,
0x49, 0x0f, 0xed, 0xeb, 0xfd, 0x3c, 0x96, 0xdb, 0xe5, 0xa8, 0x8f, 0xb0, 0x07, 0xd2, 0xf6, 0x06,
0x4e, 0x6d, 0x6d, 0xe5, 0x27, 0x83, 0xd3, 0x3d, 0xfa, 0x13, 0xe8, 0x6d, 0x75, 0x26, 0xf3, 0x14,
0x47, 0x7a, 0x35, 0xb4, 0xb4, 0xc7, 0xb0, 0x99, 0x0b, 0x92, 0xc2, 0x8e, 0x05, 0x33, 0x79, 0xa9,
0x9e, 0xa4, 0xef, 0x21, 0x27, 0xd4, 0x8b, 0xd7, 0xaf, 0x5e, 0xba, 0x2c, 0x99, 0x28, 0x8e, 0xdd,
0x39, 0x45, 0x1f, 0xbd, 0x25, 0xce, 0xaa, 0x22, 0x64, 0x3d, 0x24, 0x80, 0x66, 0xc9, 0x7b, 0x66,
0x9d, 0x71, 0x44, 0x86, 0x9f, 0xf1, 0x29, 0xf0, 0xec, 0xcb, 0x5e, 0x33, 0xd5, 0x5b, 0x3b, 0xd3,
0xbe, 0x78, 0x4a, 0x87, 0xe9, 0xd6, 0x63, 0x74, 0x4b, 0x33, 0x9e, 0x17, 0xcc, 0x1f, 0xf8, 0xdb,
0x23, 0x74, 0x0a, 0x0a, 0x52, 0x12, 0xb5, 0x91, 0x8d, 0x3f, 0x44, 0xac, 0xbd, 0xc7, 0x99, 0x95,
0x7c, 0x12, 0x6d, 0xfd, 0x54, 0x4b, 0x15, 0x36, 0x37, 0x86, 0xf3, 0x79, 0x80, 0xa3, 0x67, 0x70,
0x41, 0x17, 0x45, 0x53, 0xde, 0xb7, 0xd7, 0x82, 0x55, 0x7f, 0xbb, 0xc7, 0x7b, 0xdb, 0x46, 0x94,
0xd9, 0x76, 0xd1, 0xa8, 0x65, 0xf1, 0xde, 0xa8, 0x6f, 0x1e, 0xe3, 0xed, 0xee, 0x35, 0x20, 0x5d,
0xc9, 0x2c, 0x26, 0x9c, 0xce, 0x88, 0x74, 0xed, 0xb3, 0xa7, 0x2f, 0x25, 0xb1, 0x02, 0xfa, 0x61,
0xba, 0xb6, 0xa1, 0xb3, 0x5f, 0x8f, 0xf5, 0xc7, 0x93, 0x69, 0xf0, 0xbe, 0x82, 0x1a, 0x7f, 0x31,
0xe7, 0x6a, 0x26, 0xd3, 0x21, 0x43, 0x6a, 0xd8, 0x8d, 0x17, 0xa8, 0x19, 0x47, 0x3b, 0x12, 0xc5,
0xc0, 0xac, 0xfc, 0x00, 0x1e, 0xd4, 0x4c, 0x80, 0xde, 0xb5, 0x2c, 0xe9, 0x14, 0x42, 0xcd, 0x13,
0xe1, 0x1d, 0x99, 0xb8, 0xa2, 0x43, 0x5e, 0x8e, 0x76, 0x9b, 0x51, 0xd7, 0x4c, 0xca, 0x70, 0xe0,
0x5f, 0xce, 0x5f, 0x98, 0x1b, 0x5b, 0x1e, 0xd4, 0x73, 0x7f, 0x79, 0x8d, 0x63, 0x9a, 0x65, 0x40,
0x22, 0xd4, 0x67, 0x71, 0xf0, 0xc1, 0xfa, 0x25, 0x57, 0xc5, 0x93, 0x72, 0x3c, 0x03, 0xd3, 0x08,
0x7e, 0xe1, 0xbc, 0xf9, 0xf6, 0xe5, 0xb1, 0xfe, 0x7d, 0x94, 0x94, 0xc9, 0xbc, 0x02, 0x0d, 0x13,
0x82, 0x5c, 0x56, 0xcf, 0x01, 0xdd, 0xb6, 0x59, 0xea, 0x1e, 0x28, 0x46, 0xb3, 0x32, 0x1e, 0xcd,
0x3e, 0x6f, 0x2e, 0xa9, 0x2b, 0xc7, 0xc5, 0xca, 0xce, 0xab, 0x44, 0x24, 0x53, 0x5e, 0x7a, 0xa3,
0x3e, 0x5e, 0x31, 0xbf, 0xbd, 0x6c, 0xf8, 0x2d, 0x52, 0x84, 0xda, 0x98, 0x1b, 0xf5, 0x9f, 0xcc,
0x93, 0x7f, 0xf7, 0x2d, 0x47, 0xfb, 0x26, 0x6b, 0x8e, 0x6c, 0x63, 0x99, 0xcb, 0x72, 0x28, 0xcb,
0x44, 0x4c, 0x71, 0xfa, 0x74, 0xc7, 0x33, 0x7a, 0x00, 0xf9, 0xfc, 0x54, 0x67, 0x60, 0x20, 0x3c,
0xe0, 0xe8, 0xaf, 0x36, 0xe1, 0x52, 0xf6, 0x4b, 0x14, 0x33, 0x73, 0x3b, 0xf2, 0xb5, 0x3e, 0xef,
0x38, 0x07, 0x9f, 0xef, 0x3b, 0x5f, 0x1f, 0x1d, 0x1c, 0x22, 0x3c, 0x2f, 0xbe, 0xf7, 0x9a, 0x5b,
0x12, 0xe6, 0xb7, 0x17, 0x11, 0x38, 0x26, 0x0d, 0x8f, 0x9f, 0x3d, 0x61, 0xe6, 0x0a, 0xc0, 0xdf,
0xd9, 0xf5, 0x37, 0x77, 0xbd, 0xb5, 0xd7, 0xfb, 0x2f, 0xd7, 0x5e, 0xff, 0x4a, 0x23, 0x8e, 0x8f,
0x0e, 0x3e, 0x6d, 0xc4, 0xab, 0xc3, 0xe3, 0x83, 0xfb, 0xac, 0x78, 0x75, 0x70, 0x7c, 0xf8, 0x09,
0x2b, 0xff, 0xb8, 0xfa, 0xde, 0xf3, 0xe9, 0xce, 0x49, 0xa3, 0xd3, 0x33, 0x9b, 0x9e, 0xb9, 0x16,
0x02, 0x5d, 0xdd, 0x72, 0x2d, 0x64, 0xe5, 0x04, 0x88, 0x73, 0x89, 0xb2, 0x77, 0x06, 0x65, 0x0f,
0x63, 0x3a, 0x9b, 0x01, 0x53, 0x0f, 0xe3, 0x51, 0x9a, 0x9d, 0x77, 0xcf, 0x6b, 0x9a, 0x05, 0xe0,
0x0f, 0x86, 0xe3, 0x77, 0x7e, 0xe7, 0x7e, 0xa7, 0xbd, 0x63, 0x42, 0xeb, 0xd0, 0x42, 0x58, 0x13,
0x18, 0xa3, 0xb3, 0x92, 0x5e, 0xa0, 0x59, 0x28, 0x62, 0x2d, 0x8a, 0x57, 0x2f, 0x96, 0x85, 0x54,
0x8e, 0xee, 0x53, 0x02, 0x3a, 0xf6, 0x1d, 0x01, 0x0e, 0x95, 0x33, 0xca, 0xe2, 0xe3, 0xe4, 0x9c,
0x13, 0x1c, 0x1c, 0x25, 0x1d, 0xfb, 0xb9, 0x27, 0xfb, 0x0b, 0x77, 0xec, 0x0d, 0x4b, 0x15, 0xd0,
0xad, 0xbd, 0x29, 0x98, 0xf6, 0xbe, 0x4d, 0xd7, 0x8b, 0xd3, 0xa9, 0x08, 0xf2, 0xc3, 0x02, 0x70,
0x9e, 0x94, 0x60, 0xbf, 0xa1, 0x93, 0xd4, 0x4a, 0x86, 0x2b, 0x18, 0x55, 0xb4, 0xdd, 0xad, 0x8a,
0xed, 0xe4, 0x7c, 0xa2, 0x86, 0x5a, 0xd4, 0xb1, 0x23, 0x65, 0x36, 0x9d, 0xd9, 0xa1, 0x15, 0x0c,
0x28, 0xc4, 0x4e, 0xcd, 0x9a, 0x0a, 0x1d, 0xf5, 0xf1, 0x4c, 0xbf, 0x9f, 0x0b, 0xbd, 0x89, 0x9a,
0xdf, 0x7d, 0x08, 0xb1, 0xf0, 0x17, 0x26, 0xa7, 0xcd, 0x8a, 0xd6, 0x9c, 0xda, 0xac, 0xe0, 0xc1,
0xfc, 0x20, 0x79, 0xad, 0xda, 0x0e, 0x92, 0xee, 0xce, 0xc1, 0xb9, 0xaf, 0xbd, 0x59, 0xb2, 0x02,
0x33, 0x59, 0xc3, 0x61, 0x5a, 0x53, 0x1f, 0x51, 0x0d, 0x76, 0x08, 0xc1, 0x4b, 0xda, 0x18, 0x4c,
0x82, 0x6c, 0x5b, 0x77, 0x0f, 0xbf, 0x36, 0x5f, 0x6a, 0xfa, 0x15, 0x98, 0x71, 0xaf, 0x88, 0x1e,
0xb1, 0xb0, 0x4d, 0xb4, 0x2b, 0xb1, 0xc8, 0x56, 0x3d, 0x8f, 0xf4, 0x46, 0x64, 0xbf, 0xdb, 0x48,
0x82, 0x26, 0xe8, 0x17, 0xfc, 0x03, 0xe6, 0x26, 0xfe, 0xfc, 0x05, 0xc4, 0xeb, 0x77, 0x3f, 0x54,
0xf0, 0x95, 0x0f, 0x09, 0xd5, 0xf9, 0x31, 0xed, 0x4c, 0x3c, 0x28, 0x4a, 0x4e, 0xdf, 0x39, 0x9e,
0x19, 0x10, 0xb8, 0xf4, 0x79, 0xe6, 0x78, 0x12, 0xe8, 0x1b, 0xb2, 0xef, 0x80, 0x8f, 0x34, 0x53,
0x57, 0xae, 0x47, 0x9f, 0x48, 0x30, 0x5a, 0xd5, 0x67, 0xf3, 0x8c, 0xbe, 0x90, 0x6c, 0x8c, 0xfa,
0xf6, 0x63, 0xde, 0x48, 0xaf, 0x1c, 0xff, 0x3e, 0x9b, 0xd3, 0x37, 0x40, 0xa7, 0x2e, 0x73, 0xd7,
0x1c, 0xa1, 0x83, 0x31, 0xce, 0xd5, 0x5e, 0x08, 0x41, 0x2d, 0x80, 0x2a, 0x40, 0x9b, 0x15, 0x8f,
0xe8, 0xd3, 0x0f, 0x35, 0x5b, 0xf0, 0x2a, 0x62, 0xd8, 0x8a, 0x50, 0x04, 0xd4, 0x46, 0x6e, 0x38,
0x19, 0x7e, 0xdb, 0x86, 0xd2, 0x16, 0xca, 0xf1, 0x84, 0x39, 0x66, 0xf3, 0x89, 0x58, 0x81, 0x16,
0x94, 0x61, 0x9e, 0xb1, 0x00, 0xbc, 0x41, 0xe6, 0x93, 0xdd, 0xa4, 0x80, 0x30, 0x69, 0xf9, 0x44,
0xc9, 0x02, 0x09, 0x60, 0xf1, 0x46, 0x77, 0x90, 0x8a, 0xed, 0x29, 0xe4, 0x2c, 0x9b, 0xaf, 0xd0,
0xef, 0x92, 0xdb, 0x5f, 0x90, 0x31, 0x4b, 0x32, 0x36, 0x59, 0x6e, 0xe6, 0x6c, 0xdc, 0x31, 0xe9,
0x29, 0x4d, 0x7a, 0x9a, 0x8c, 0x3f, 0x2c, 0xe7, 0xad, 0xac, 0x62, 0xec, 0x65, 0xb6, 0xf4, 0x5a,
0x91, 0x12, 0x06, 0x56, 0x45, 0x22, 0xb4, 0xd7, 0x79, 0x55, 0xd5, 0x63, 0xb6, 0x4a, 0xeb, 0xd3,
0x92, 0x73, 0x11, 0xda, 0x7c, 0x0e, 0x85, 0x44, 0x32, 0xe3, 0xad, 0xcf, 0x76, 0x07, 0x83, 0xc1,
0x17, 0xa1, 0xb3, 0xbf, 0xfa, 0x15, 0x09, 0xaa, 0xd3, 0x4d, 0xca, 0x08, 0x14, 0xc6, 0x4e, 0x57,
0x2f, 0x61, 0x63, 0x55, 0x6f, 0xc9, 0xd3, 0x35, 0xad, 0x1b, 0x5b, 0x9f, 0x3d, 0x7e, 0xf4, 0xe8,
0x11, 0x69, 0xad, 0xf3, 0x54, 0x53, 0x07, 0x25, 0x67, 0x95, 0x51, 0x02, 0xab, 0xdd, 0x06, 0x85,
0x62, 0x4b, 0x2b, 0x00, 0xfb, 0xf1, 0x46, 0xf3, 0x79, 0xab, 0x81, 0x74, 0x10, 0x04, 0x1d, 0x31,
0x93, 0x4a, 0xfd, 0xed, 0xec, 0x15, 0x68, 0x28, 0xa1, 0xbd, 0xca, 0xbe, 0x26, 0x8e, 0xfc, 0x6f,
0x84, 0x17, 0xa1, 0x20, 0x20, 0x61, 0x19, 0x02, 0x1b, 0x21, 0x8f, 0xbe, 0xa9, 0xff, 0x1b, 0x47,
0x43, 0xb6, 0x09, 0x69, 0x1f, 0x00, 0x00
};

View File

@@ -7,7 +7,7 @@
*/
// Autogenerated from wled00/data/simple.htm, do not edit!!
const uint16_t PAGE_simple_L = 18206;
const uint16_t PAGE_simple_L = 18212;
const uint8_t PAGE_simple[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0xbd, 0xe9, 0x76, 0xe3, 0x3a,
0xae, 0x30, 0xfa, 0x3f, 0x4f, 0xe1, 0x52, 0x75, 0xa7, 0xac, 0xb6, 0x62, 0xcb, 0x63, 0x3c, 0x94,
@@ -1082,69 +1082,70 @@ const uint8_t PAGE_simple[] PROGMEM = {
0xbd, 0x56, 0xa1, 0xc9, 0x7a, 0x81, 0x55, 0xa4, 0xb6, 0x96, 0x44, 0xd5, 0xf7, 0x6a, 0xa3, 0x30,
0x16, 0xdb, 0x18, 0x9d, 0x84, 0xa0, 0xe2, 0x7d, 0x99, 0x68, 0xa5, 0x70, 0xa6, 0x28, 0x6e, 0x54,
0x6a, 0x5a, 0x78, 0x57, 0x54, 0x07, 0x4a, 0x74, 0x77, 0xc1, 0xf3, 0x80, 0x83, 0x43, 0x3c, 0xfa,
0x61, 0x07, 0x3a, 0xf8, 0x9e, 0x0e, 0x82, 0x36, 0x79, 0x31, 0x61, 0x31, 0x7e, 0x6d, 0x18, 0xf1,
0x3a, 0x87, 0x0e, 0xba, 0xb9, 0x89, 0xf6, 0x02, 0x92, 0xcf, 0xc2, 0x13, 0x4c, 0x6c, 0x98, 0x22,
0x76, 0x33, 0xd6, 0x57, 0x89, 0xd3, 0xe9, 0x81, 0x92, 0x69, 0xe6, 0xab, 0xfc, 0x4e, 0x91, 0x06,
0x9f, 0xc0, 0x66, 0x79, 0x61, 0xa0, 0xec, 0x14, 0xfc, 0xd7, 0xa2, 0x58, 0x01, 0x8c, 0x96, 0x4a,
0xcd, 0xe6, 0x40, 0xa1, 0x29, 0x99, 0x66, 0x11, 0x53, 0xc4, 0x6a, 0x24, 0x05, 0x00, 0x30, 0xce,
0xc4, 0x62, 0x72, 0xfb, 0xd3, 0x43, 0x67, 0xbf, 0xf9, 0x7b, 0xe0, 0x60, 0x7c, 0xb2, 0x81, 0xb2,
0xc0, 0x60, 0x6f, 0xc8, 0xcb, 0xca, 0xa0, 0x17, 0xff, 0xe6, 0x17, 0x42, 0x2d, 0x2f, 0x32, 0x72,
0x51, 0x8c, 0x9e, 0x1d, 0x33, 0x20, 0x86, 0x81, 0xc2, 0xe9, 0x81, 0x05, 0xe6, 0xc7, 0x64, 0xff,
0x20, 0xb6, 0x78, 0x10, 0xc2, 0x81, 0xc4, 0xda, 0xe4, 0xbe, 0xe2, 0xa7, 0x12, 0x05, 0x12, 0x39,
0x9a, 0xe5, 0xe8, 0x67, 0x7f, 0xed, 0x61, 0x8a, 0x05, 0x1e, 0xe7, 0xa8, 0xc9, 0x3e, 0xcd, 0x5a,
0x86, 0x75, 0xba, 0xe6, 0x4b, 0xc3, 0xb4, 0x21, 0x6e, 0xf5, 0x45, 0xfb, 0xd8, 0xe5, 0xea, 0xa4,
0x33, 0x18, 0xeb, 0x96, 0xb7, 0x95, 0xbd, 0x13, 0x07, 0x41, 0xd2, 0xa7, 0xcc, 0xb5, 0xc0, 0xe5,
0x5d, 0x7b, 0x86, 0x60, 0xd2, 0xb1, 0x13, 0x38, 0x97, 0x79, 0x01, 0x8c, 0xf1, 0xe4, 0x3a, 0x38,
0x43, 0xc2, 0x1b, 0x67, 0x7e, 0xcc, 0x85, 0x48, 0xa3, 0x4d, 0x0c, 0x54, 0x41, 0x87, 0xc5, 0x6e,
0x3e, 0xf3, 0x0b, 0x2f, 0x26, 0x16, 0x3f, 0x5f, 0xc4, 0xca, 0xcd, 0x17, 0x78, 0xa7, 0x2c, 0x36,
0x0e, 0x51, 0xf0, 0x62, 0x1b, 0xad, 0x0b, 0x4f, 0x4a, 0x7b, 0x9a, 0x0c, 0x7d, 0x31, 0xb7, 0xea,
0xb1, 0xb8, 0xdc, 0xd0, 0xb1, 0x7a, 0xb4, 0x97, 0x0b, 0x74, 0x5c, 0x5c, 0x15, 0xbb, 0x20, 0x16,
0x09, 0x26, 0x8e, 0x50, 0x3c, 0x6f, 0xfd, 0x74, 0xe8, 0x82, 0xe9, 0x0f, 0x0b, 0xb7, 0x4f, 0x90,
0x4f, 0xe3, 0xfe, 0xc1, 0xff, 0x81, 0x4d, 0xf3, 0x6f, 0x18, 0x33, 0x4d, 0xc0, 0x5c, 0x0c, 0xc1,
0xcb, 0x21, 0x47, 0xa2, 0x58, 0x32, 0xb3, 0x16, 0xc0, 0xf8, 0x6e, 0x66, 0x87, 0x3f, 0x92, 0x71,
0x85, 0x96, 0xb0, 0x91, 0xc9, 0x63, 0x38, 0x65, 0x01, 0xe4, 0xba, 0xba, 0x9b, 0x8e, 0x87, 0x39,
0x5b, 0xba, 0xfe, 0x1e, 0xe5, 0x3a, 0xf4, 0xa3, 0x1d, 0x78, 0xe8, 0x17, 0x46, 0xee, 0x58, 0x2f,
0x8d, 0x04, 0x1a, 0x2f, 0xde, 0x9f, 0xf1, 0x3c, 0x84, 0x92, 0x36, 0x8f, 0xc0, 0x7b, 0x1f, 0x17,
0xa0, 0xcb, 0xaf, 0x3c, 0x7b, 0x0f, 0x9d, 0x34, 0x35, 0x74, 0x2a, 0x09, 0x43, 0x7f, 0x69, 0xe1,
0x35, 0x21, 0xf3, 0xa7, 0x86, 0xa1, 0xce, 0x9c, 0x95, 0x2e, 0x99, 0xd4, 0x6b, 0xcc, 0x73, 0xa8,
0xb8, 0x81, 0xde, 0x82, 0xc0, 0x77, 0x8b, 0x1f, 0x6e, 0x6f, 0x4b, 0x18, 0xf7, 0xa8, 0xe1, 0x24,
0xfa, 0x6b, 0x04, 0x2e, 0x1a, 0x5e, 0xa7, 0xe3, 0xe5, 0xf9, 0x9d, 0xad, 0x3c, 0xb5, 0x7a, 0xb1,
0x73, 0xfd, 0x45, 0x3c, 0xb6, 0x91, 0xc1, 0x7c, 0x9d, 0x56, 0xe9, 0xfc, 0x0d, 0xdf, 0xcb, 0x0c,
0x5d, 0x44, 0x35, 0x73, 0xe4, 0xc4, 0xb1, 0xe6, 0x0b, 0x4c, 0xf4, 0x1a, 0x7c, 0x96, 0x7e, 0x27,
0x25, 0x8d, 0x11, 0x1b, 0x11, 0x08, 0xce, 0x0e, 0x0d, 0x8d, 0x95, 0x46, 0x31, 0x8b, 0x3d, 0xb1,
0x98, 0x65, 0x5c, 0xd4, 0x07, 0x7c, 0xc4, 0x3e, 0xaf, 0x12, 0xca, 0xdd, 0x4b, 0xda, 0xaa, 0xac,
0x8f, 0xec, 0xf4, 0xca, 0x93, 0xaf, 0xe5, 0x9c, 0xa8, 0x02, 0xc9, 0x72, 0x17, 0xcc, 0xf1, 0xf3,
0xbf, 0xdb, 0x2b, 0x02, 0x27, 0x87, 0xdf, 0xb8, 0xe6, 0x85, 0xf3, 0x66, 0x9e, 0xba, 0x85, 0x4e,
0x04, 0x8d, 0xf6, 0xa5, 0x29, 0x0a, 0x53, 0x91, 0x59, 0xdc, 0x99, 0x41, 0xa3, 0x4b, 0x23, 0xd4,
0xa3, 0xfd, 0x29, 0xc6, 0xa0, 0x47, 0x06, 0x3b, 0xa3, 0x08, 0x3c, 0x23, 0xb2, 0xec, 0xe6, 0x8e,
0x7a, 0x43, 0xe3, 0x80, 0x39, 0x3f, 0x92, 0x09, 0x3f, 0xc5, 0x5f, 0xf5, 0xc8, 0xdd, 0x90, 0x81,
0xe4, 0x1c, 0xd9, 0x26, 0xf5, 0x86, 0xa3, 0x31, 0x1d, 0x62, 0x7e, 0x46, 0x64, 0xe9, 0xc8, 0x96,
0x79, 0x6d, 0x84, 0x57, 0x8e, 0xa1, 0x2e, 0xa0, 0xd3, 0x3b, 0xc5, 0x16, 0x17, 0xfe, 0x71, 0x76,
0x94, 0x4f, 0x2b, 0x2f, 0xe9, 0x88, 0xbb, 0xa0, 0xe7, 0xd1, 0x16, 0x28, 0x8e, 0xf4, 0x16, 0x78,
0xcc, 0xcd, 0xcd, 0x0f, 0x68, 0x1e, 0x14, 0x81, 0x59, 0xf6, 0x30, 0xe5, 0xa4, 0x83, 0x6f, 0x0e,
0xf2, 0x7f, 0xfd, 0x15, 0xed, 0xba, 0x9b, 0x78, 0x37, 0x31, 0x3e, 0x24, 0x20, 0xd0, 0x47, 0x0f,
0x40, 0x43, 0x69, 0xfe, 0x21, 0x40, 0xa6, 0xe7, 0x8e, 0x16, 0xf9, 0x9c, 0x38, 0xff, 0x93, 0x61,
0xfe, 0x97, 0x67, 0x41, 0xba, 0x31, 0x2d, 0xe1, 0xbf, 0xdb, 0xab, 0x7c, 0xe8, 0x3c, 0x33, 0xd2,
0x97, 0xb4, 0x3f, 0x1f, 0x22, 0x1f, 0x25, 0x29, 0xaa, 0x27, 0x33, 0x25, 0x94, 0x15, 0xf0, 0x47,
0xbf, 0xd4, 0x19, 0xb3, 0xe9, 0x6e, 0x4d, 0x45, 0x3f, 0x94, 0x16, 0x65, 0x51, 0x26, 0x86, 0xce,
0xca, 0xa4, 0x9d, 0x7f, 0x99, 0xb9, 0x49, 0x78, 0x3f, 0xb3, 0xc0, 0x37, 0xc4, 0x2f, 0x18, 0x28,
0x30, 0xcd, 0xfa, 0xb8, 0x23, 0x02, 0x33, 0xfc, 0x2e, 0xf2, 0x41, 0xc2, 0x77, 0x4c, 0xd8, 0xc1,
0x04, 0x63, 0x27, 0x9b, 0x2f, 0x6c, 0x6e, 0x7e, 0x6a, 0x7c, 0xcd, 0xa6, 0x87, 0x0e, 0x80, 0x03,
0x43, 0x5d, 0x0e, 0x21, 0xcf, 0x6d, 0x6d, 0x69, 0x9c, 0x47, 0x91, 0x5b, 0x4d, 0x07, 0xfb, 0x96,
0xdf, 0x32, 0x7c, 0x27, 0x27, 0x09, 0x17, 0xe1, 0x8b, 0xe3, 0x75, 0x01, 0x76, 0x98, 0x75, 0x30,
0x7a, 0x9c, 0x60, 0xf0, 0x9f, 0x45, 0x26, 0x9e, 0xad, 0x79, 0xa4, 0x1f, 0x61, 0x14, 0x2c, 0xf0,
0x5e, 0x54, 0xf4, 0x70, 0x4d, 0x8b, 0xf3, 0x51, 0x79, 0x48, 0xaf, 0x3e, 0x37, 0x82, 0xe0, 0xdf,
0x78, 0xd3, 0x3b, 0xc3, 0xc5, 0x03, 0x82, 0x5b, 0x90, 0xb6, 0x95, 0x4e, 0xc8, 0xb1, 0xb2, 0xad,
0xad, 0x32, 0x90, 0xff, 0x10, 0xeb, 0x89, 0x6c, 0xd6, 0x0e, 0xe0, 0x8c, 0x4f, 0xc0, 0xa5, 0x81,
0x71, 0x31, 0x02, 0x79, 0x94, 0x02, 0x82, 0x70, 0xa0, 0x44, 0xc8, 0x66, 0xb3, 0x2e, 0x13, 0x9e,
0x7c, 0xeb, 0x8a, 0x2f, 0x31, 0x90, 0x06, 0xe3, 0x0d, 0xe8, 0x40, 0xe3, 0x5f, 0x61, 0x80, 0x72,
0x7e, 0x4c, 0xfc, 0xcd, 0x4d, 0xf6, 0x64, 0xf2, 0x61, 0x30, 0x81, 0x14, 0xde, 0xfa, 0x49, 0x99,
0xbc, 0x97, 0x03, 0xab, 0x91, 0xff, 0x41, 0x17, 0xe5, 0x5f, 0x7f, 0xc5, 0x77, 0x3a, 0xd8, 0x85,
0x21, 0xb5, 0x3e, 0x47, 0x89, 0x38, 0xd2, 0x1b, 0x48, 0x13, 0x68, 0x2d, 0xbe, 0xbe, 0xb2, 0x3c,
0xe6, 0x2d, 0x02, 0x51, 0x6e, 0x69, 0x18, 0x0b, 0x2f, 0xfc, 0xa1, 0x27, 0xa3, 0x2d, 0x07, 0x1f,
0x04, 0x29, 0x0d, 0x4a, 0x70, 0x34, 0x4c, 0x22, 0x8d, 0x97, 0x08, 0x73, 0xbe, 0x5c, 0x6a, 0x68,
0xe2, 0xd5, 0x52, 0xb4, 0xd6, 0x52, 0x8e, 0xb6, 0xbe, 0x60, 0x34, 0xf2, 0xe1, 0xfb, 0x25, 0x29,
0x48, 0xd8, 0xbc, 0x39, 0x01, 0x57, 0xdf, 0x07, 0xe5, 0x46, 0xd6, 0x47, 0xc5, 0xc2, 0x20, 0x8a,
0x7e, 0xb9, 0x8d, 0xef, 0x39, 0xef, 0xa3, 0x28, 0xa9, 0xef, 0x39, 0x3c, 0x6c, 0xc5, 0xdf, 0x81,
0x3b, 0xd4, 0x77, 0x52, 0xff, 0x1f, 0x73, 0x06, 0xb2, 0x73, 0x47, 0xc7, 0x00, 0x00
0x61, 0x07, 0x3a, 0xf8, 0x9e, 0x0e, 0x82, 0x36, 0x79, 0x31, 0x61, 0x31, 0x7e, 0xed, 0x99, 0x69,
0x1a, 0x67, 0xa6, 0x3a, 0xd2, 0x89, 0x93, 0x43, 0x0f, 0xdd, 0xdc, 0x44, 0x7b, 0x01, 0xd1, 0x67,
0xe1, 0x49, 0x26, 0x36, 0xcc, 0x11, 0xbb, 0x1a, 0xeb, 0xeb, 0xc4, 0xe9, 0xf4, 0x40, 0xc9, 0x34,
0xf3, 0x55, 0x7e, 0xa7, 0x48, 0xa3, 0x4f, 0x60, 0xbb, 0xbc, 0x30, 0x50, 0x76, 0x0a, 0xfe, 0x6b,
0x51, 0xac, 0x00, 0x4a, 0x4b, 0xa5, 0x66, 0x73, 0xa0, 0xd0, 0x94, 0x4c, 0xb3, 0x88, 0x29, 0x62,
0x35, 0x92, 0x02, 0x00, 0x18, 0x6b, 0x62, 0x41, 0xb9, 0xfd, 0xf9, 0xa1, 0xd3, 0xdf, 0xfc, 0x3d,
0x70, 0x30, 0x40, 0xd9, 0x40, 0x59, 0x60, 0xb4, 0x37, 0x64, 0x66, 0x65, 0x50, 0x8c, 0x7f, 0xf3,
0x0b, 0xa1, 0x96, 0x17, 0x19, 0xbd, 0x28, 0x46, 0xcf, 0x8e, 0x59, 0x10, 0xc3, 0x48, 0xe1, 0xf4,
0xc4, 0x02, 0xf3, 0x63, 0xc2, 0x7f, 0x10, 0x5c, 0x3c, 0x88, 0xe1, 0x40, 0x62, 0x6d, 0x72, 0x5f,
0xf1, 0x5b, 0x89, 0x02, 0x89, 0x9c, 0xcd, 0x72, 0xf4, 0xbb, 0xbf, 0xf6, 0x30, 0xc5, 0x22, 0x8f,
0x73, 0xd4, 0x66, 0x9f, 0x66, 0x2d, 0xc3, 0x42, 0x5d, 0xf3, 0xa9, 0x61, 0xda, 0x10, 0xb7, 0xfa,
0xa6, 0x7d, 0xec, 0x76, 0x75, 0xd2, 0x1b, 0x8c, 0x75, 0xcb, 0xdb, 0xcb, 0xde, 0x09, 0x84, 0x20,
0xe9, 0x53, 0xe6, 0x5b, 0xe0, 0xf2, 0xae, 0x3d, 0x43, 0x30, 0xe9, 0xd8, 0x11, 0x9c, 0xcb, 0xdc,
0x00, 0xc6, 0x78, 0x74, 0x1d, 0x1c, 0x22, 0xe1, 0x95, 0x33, 0x3f, 0xe8, 0x42, 0xa4, 0xd1, 0x26,
0x46, 0xaa, 0xa0, 0xc3, 0x62, 0x57, 0x9f, 0xf9, 0x85, 0x17, 0x14, 0x8b, 0x9f, 0x2f, 0x62, 0xe5,
0xe6, 0x0b, 0xbc, 0x54, 0x16, 0x1b, 0x87, 0x28, 0x78, 0xc1, 0x8d, 0xd6, 0xc5, 0x27, 0xa5, 0x3d,
0x4d, 0xc6, 0xbe, 0x98, 0x5b, 0xf5, 0x58, 0x60, 0x6e, 0xe8, 0x58, 0x3d, 0xda, 0xcb, 0x05, 0x7a,
0x2e, 0xae, 0x0a, 0x5e, 0x10, 0x0b, 0x05, 0x13, 0x47, 0x28, 0x1e, 0xb8, 0x7e, 0x3a, 0x76, 0xc1,
0xf4, 0x87, 0x85, 0xfb, 0x27, 0x08, 0xa8, 0x71, 0x07, 0xe1, 0xff, 0xc0, 0xa8, 0xf9, 0x37, 0xac,
0x99, 0x26, 0x60, 0x2e, 0x86, 0xe0, 0xe5, 0x98, 0x23, 0x51, 0x2c, 0x99, 0x59, 0x0b, 0x60, 0x7c,
0x37, 0xb3, 0xc3, 0x1f, 0xc9, 0xc0, 0x42, 0x4b, 0xd8, 0xc8, 0xe4, 0x31, 0x9e, 0xb2, 0x00, 0x82,
0x5d, 0xdd, 0x4d, 0xc7, 0xe3, 0x9c, 0x2d, 0xdd, 0x7f, 0x8f, 0xb2, 0x1d, 0xfa, 0xd5, 0x0e, 0x3c,
0xf5, 0x0b, 0x43, 0x77, 0xac, 0x17, 0x47, 0x02, 0x95, 0x17, 0x2f, 0xd0, 0x78, 0x2e, 0x42, 0x49,
0xa3, 0x47, 0xe0, 0xbe, 0x8f, 0x0b, 0xd0, 0xe5, 0x57, 0x1e, 0xbe, 0x87, 0x5e, 0x9a, 0x1a, 0x7a,
0x95, 0x84, 0xb1, 0xbf, 0xb4, 0xf0, 0x9e, 0x90, 0xf9, 0x53, 0xc3, 0x58, 0x67, 0xce, 0x4a, 0x9f,
0x4c, 0xea, 0x36, 0xe6, 0x79, 0x54, 0xdc, 0x40, 0x6f, 0x41, 0xe2, 0xbb, 0xc5, 0x2f, 0xb7, 0xb7,
0x25, 0x0c, 0x7c, 0xd4, 0x70, 0x12, 0xfd, 0x35, 0x02, 0x1f, 0x0d, 0xaf, 0xd3, 0xf1, 0xf2, 0xfc,
0xce, 0x56, 0x9e, 0x9a, 0xbd, 0xd8, 0xc1, 0xfe, 0x22, 0x1e, 0xdc, 0xc8, 0x60, 0xce, 0x4e, 0xab,
0x94, 0xfe, 0x86, 0xef, 0x66, 0x86, 0x3e, 0xa2, 0x9a, 0x39, 0x72, 0xe2, 0x58, 0xf3, 0x25, 0x26,
0x7a, 0x0f, 0x3e, 0x4b, 0x3f, 0x94, 0x92, 0xc6, 0x90, 0x8d, 0x08, 0x04, 0x67, 0x87, 0xc6, 0xc6,
0x4a, 0xa3, 0x9c, 0xc5, 0x9e, 0x58, 0xd0, 0x32, 0x2e, 0xea, 0x04, 0x3e, 0x62, 0xdf, 0x57, 0x09,
0x05, 0xef, 0x25, 0x75, 0x55, 0xd6, 0x47, 0x76, 0x7a, 0xe5, 0xd1, 0xd7, 0x72, 0x4e, 0x54, 0x83,
0x64, 0xb9, 0x0b, 0xe6, 0xf9, 0xf9, 0xdf, 0xed, 0x15, 0x91, 0x93, 0xc3, 0x8f, 0x5c, 0xf3, 0xc2,
0x79, 0x33, 0x4f, 0xfd, 0x42, 0x27, 0x82, 0x46, 0xfb, 0xd2, 0x14, 0x85, 0xa9, 0xc8, 0x4c, 0xee,
0xcc, 0xa2, 0xd1, 0xa5, 0x21, 0xea, 0xd1, 0x00, 0x15, 0x63, 0xd0, 0x23, 0x83, 0x1d, 0x52, 0x04,
0xae, 0x11, 0x59, 0x76, 0x75, 0x47, 0xbd, 0xa1, 0x81, 0xc0, 0x9c, 0x1f, 0xc9, 0x84, 0x9f, 0xe2,
0xaf, 0x7a, 0xe4, 0x72, 0xc8, 0x40, 0x72, 0x8e, 0x6c, 0x93, 0xba, 0xc3, 0xd1, 0xa0, 0x0e, 0x31,
0x47, 0x23, 0xb2, 0x74, 0x66, 0xcb, 0xdc, 0x36, 0xc2, 0x3b, 0xc7, 0x50, 0x17, 0xd0, 0xe9, 0x1d,
0x63, 0x8b, 0x0b, 0xff, 0x3c, 0x3b, 0xca, 0xa7, 0x95, 0x97, 0x74, 0xc4, 0x5f, 0xd0, 0x73, 0x69,
0x0b, 0x34, 0x47, 0x7a, 0x0d, 0x3c, 0xe6, 0xe7, 0xe6, 0x47, 0x34, 0x0f, 0x8a, 0xc0, 0x2c, 0x7b,
0x98, 0x72, 0xd2, 0xc1, 0x47, 0x07, 0xf9, 0xbf, 0xfe, 0x8a, 0x76, 0xdd, 0x4d, 0xbc, 0x9b, 0x18,
0x20, 0x12, 0x10, 0xe8, 0xa3, 0x07, 0xa0, 0xa1, 0x38, 0xff, 0x10, 0x20, 0xd3, 0xf3, 0x47, 0x8b,
0x7c, 0x4f, 0x9c, 0xff, 0xc9, 0x30, 0xff, 0xcb, 0x33, 0x21, 0xdd, 0x98, 0x96, 0xf0, 0xdf, 0xed,
0x55, 0x4e, 0x74, 0x9e, 0x1d, 0xe9, 0x4b, 0xda, 0x9f, 0x0f, 0x91, 0x8f, 0x92, 0x14, 0x55, 0x94,
0x99, 0x16, 0xca, 0x0a, 0xf8, 0xa3, 0x5f, 0xea, 0x8c, 0xd9, 0x74, 0xb7, 0xa6, 0xa2, 0x1f, 0x4b,
0x8b, 0xb2, 0x28, 0x13, 0x63, 0x67, 0x65, 0xd2, 0xce, 0xbf, 0xcc, 0xdc, 0x24, 0xbc, 0xa0, 0x59,
0xe0, 0x1b, 0xe2, 0x17, 0x8c, 0x14, 0x98, 0x66, 0x7d, 0xdc, 0x11, 0x81, 0x19, 0x7e, 0x17, 0xf9,
0x20, 0xe1, 0x3b, 0x26, 0xec, 0x60, 0x82, 0xb1, 0x93, 0xcd, 0x17, 0x36, 0x37, 0x3f, 0x35, 0xbe,
0x66, 0xd3, 0x43, 0x07, 0xc0, 0x81, 0xa1, 0x2e, 0xc7, 0x90, 0xe7, 0xb6, 0xb6, 0x34, 0xce, 0xa3,
0xc8, 0xad, 0xa6, 0x83, 0x7d, 0xcb, 0x6f, 0x19, 0xbe, 0x97, 0x93, 0x84, 0x8b, 0xf0, 0xc5, 0xf1,
0xba, 0x00, 0x3b, 0xcc, 0x3a, 0x18, 0x3d, 0x4e, 0x30, 0xf8, 0xcf, 0x22, 0x13, 0x0f, 0xd7, 0x3c,
0xd2, 0x8f, 0x30, 0x0a, 0x16, 0x79, 0x2f, 0x2a, 0x7a, 0xb8, 0xa6, 0xc5, 0xf9, 0xa8, 0x3c, 0xa4,
0x77, 0x9f, 0x1b, 0x41, 0xf4, 0x6f, 0xbc, 0xea, 0x9d, 0xe1, 0xe2, 0x11, 0xc1, 0x2d, 0x48, 0xdb,
0x4a, 0x27, 0x04, 0x59, 0xd9, 0xd6, 0x56, 0x59, 0xc8, 0x7f, 0x88, 0xf5, 0x44, 0x36, 0x6b, 0x07,
0x70, 0xc6, 0x27, 0xe0, 0xd2, 0xc8, 0xb8, 0x18, 0x82, 0x3c, 0x4a, 0x01, 0x41, 0x3c, 0x50, 0x22,
0x64, 0xb3, 0x59, 0x97, 0x09, 0x4f, 0xbe, 0x79, 0xc5, 0x97, 0x18, 0x48, 0x83, 0xf1, 0x06, 0xf4,
0xa0, 0xf1, 0xef, 0x30, 0x40, 0x39, 0x3f, 0x28, 0xfe, 0xe6, 0x26, 0x7b, 0x32, 0xf9, 0x30, 0x9a,
0x40, 0x0a, 0xaf, 0xfd, 0xa4, 0x4c, 0xde, 0xcb, 0x81, 0xd5, 0xc8, 0xff, 0xa0, 0x8b, 0xf2, 0xaf,
0xbf, 0xe2, 0x3b, 0x1d, 0xec, 0xc2, 0x90, 0x5a, 0x9f, 0xa3, 0x48, 0x1c, 0xe9, 0x0d, 0xa4, 0x09,
0xb4, 0x16, 0x5f, 0x5f, 0x59, 0x1e, 0xf3, 0x16, 0x81, 0x28, 0xb7, 0x34, 0x8c, 0x85, 0x17, 0xff,
0xd0, 0x93, 0xd1, 0x96, 0xa3, 0x0f, 0x82, 0x94, 0x06, 0x25, 0x38, 0x1a, 0x27, 0x91, 0x06, 0x4c,
0x84, 0x39, 0x5f, 0x2e, 0x35, 0x34, 0xf1, 0x6e, 0x29, 0x9a, 0x6b, 0x29, 0x47, 0x5b, 0x5f, 0x30,
0x1a, 0xfa, 0xf0, 0xfd, 0x92, 0x14, 0x24, 0x6c, 0xde, 0x9c, 0x80, 0xab, 0xef, 0x83, 0x72, 0x23,
0xeb, 0xa3, 0x62, 0x61, 0x14, 0x45, 0xbf, 0xdc, 0xc6, 0xf7, 0x9c, 0xf7, 0x55, 0x94, 0xd4, 0xf7,
0x1c, 0x9e, 0xb6, 0xe2, 0xef, 0xc0, 0x1d, 0xea, 0x3b, 0xa9, 0xff, 0x0f, 0x56, 0x75, 0xa0, 0x7d,
0x48, 0xc7, 0x00, 0x00
};

File diff suppressed because it is too large Load Diff

View File

@@ -53,6 +53,7 @@ void onMqttConnect(bool sessionPresent)
void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) {
static char *payloadStr;
DEBUG_PRINT(F("MQTT msg: "));
DEBUG_PRINTLN(topic);
@@ -62,11 +63,22 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
DEBUG_PRINTLN(F("no payload -> leave"));
return;
}
//make a copy of the payload to 0-terminate it
char* payloadStr = new char[len+1];
if (payloadStr == nullptr) return; //no mem
strncpy(payloadStr, payload, len);
payloadStr[len] = '\0';
if (index == 0) { // start (1st partial packet or the only packet)
if (payloadStr) delete[] payloadStr; // fail-safe: release buffer
payloadStr = new char[total+1]; // allocate new buffer
}
if (payloadStr == nullptr) return; // buffer not allocated
// copy (partial) packet to buffer and 0-terminate it if it is last packet
char* buff = payloadStr + index;
memcpy(buff, payload, len);
if (index + len >= total) { // at end
payloadStr[total] = '\0'; // terminate c style string
} else {
DEBUG_PRINTLN(F("Partial packet received."));
return; // process next packet
}
DEBUG_PRINTLN(payloadStr);
size_t topicPrefixLen = strlen(mqttDeviceTopic);
@@ -80,6 +92,7 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
// Non-Wled Topic used here. Probably a usermod subscribed to this topic.
usermods.onMqttMessage(topic, payloadStr);
delete[] payloadStr;
payloadStr = nullptr;
return;
}
}
@@ -87,16 +100,20 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
//Prefix is stripped from the topic at this point
if (strcmp_P(topic, PSTR("/col")) == 0) {
colorFromDecOrHexString(col, (char*)payloadStr);
colorFromDecOrHexString(col, payloadStr);
colorUpdated(CALL_MODE_DIRECT_CHANGE);
} else if (strcmp_P(topic, PSTR("/api")) == 0) {
if (!requestJSONBufferLock(15)) { delete[] payloadStr; return; }
if (payload[0] == '{') { //JSON API
if (!requestJSONBufferLock(15)) {
delete[] payloadStr;
payloadStr = nullptr;
return;
}
if (payloadStr[0] == '{') { //JSON API
deserializeJson(doc, payloadStr);
deserializeState(doc.as<JsonObject>());
} else { //HTTP API
String apireq = "win"; apireq += '&'; // reduce flash string usage
apireq += (char*)payloadStr;
apireq += payloadStr;
handleSet(nullptr, apireq);
}
releaseJSONBufferLock();
@@ -108,6 +125,7 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
parseMQTTBriPayload(payloadStr);
}
delete[] payloadStr;
payloadStr = nullptr;
}

View File

@@ -10,7 +10,7 @@
*/
/*
* @title Espalexa library
* @version 2.7.0
* @version 2.7.1
* @author Christian Schwinne
* @license MIT
* @contributors d-999
@@ -50,7 +50,7 @@
#include "../network/Network.h"
#ifdef ESPALEXA_DEBUG
#pragma message "Espalexa 2.7.0 debug mode"
#pragma message "Espalexa 2.7.1 debug mode"
#define EA_DEBUG(x) Serial.print (x)
#define EA_DEBUGLN(x) Serial.println (x)
#else
@@ -142,7 +142,7 @@ private:
}
//device JSON string: color+temperature device emulates LCT015, dimmable device LWB010, (TODO: on/off Plug 01, color temperature device LWT010, color device LST001)
void deviceJsonString(EspalexaDevice* dev, char* buf)
void deviceJsonString(EspalexaDevice* dev, char* buf, size_t maxBuf) // softhack007 "size" parameter added, to avoid buffer overrun
{
char buf_lightid[27];
encodeLightId(dev->getId() + 1, buf_lightid);
@@ -153,19 +153,19 @@ private:
//TODO: %f is not working for some reason on ESP8266 in v0.11.0 (was fine in 0.10.2). Need to investigate
//sprintf_P(buf_col,PSTR(",\"hue\":%u,\"sat\":%u,\"effect\":\"none\",\"xy\":[%f,%f]")
// ,dev->getHue(), dev->getSat(), dev->getX(), dev->getY());
sprintf_P(buf_col,PSTR(",\"hue\":%u,\"sat\":%u,\"effect\":\"none\",\"xy\":[%s,%s]"),dev->getHue(), dev->getSat(),
snprintf_P(buf_col, sizeof(buf_col), PSTR(",\"hue\":%u,\"sat\":%u,\"effect\":\"none\",\"xy\":[%s,%s]"),dev->getHue(), dev->getSat(),
((String)dev->getX()).c_str(), ((String)dev->getY()).c_str());
char buf_ct[16] = "";
//white spectrum support
if (static_cast<uint8_t>(dev->getType()) > 1 && dev->getType() != EspalexaDeviceType::color)
sprintf(buf_ct, ",\"ct\":%u", dev->getCt());
snprintf(buf_ct, sizeof(buf_ct), ",\"ct\":%u", dev->getCt());
char buf_cm[20] = "";
if (static_cast<uint8_t>(dev->getType()) > 1)
sprintf(buf_cm,PSTR("\",\"colormode\":\"%s"), modeString(dev->getColorMode()));
snprintf(buf_cm, sizeof(buf_cm), PSTR("\",\"colormode\":\"%s"), modeString(dev->getColorMode()));
sprintf_P(buf, PSTR("{\"state\":{\"on\":%s,\"bri\":%u%s%s,\"alert\":\"none%s\",\"mode\":\"homeautomation\",\"reachable\":true},"
snprintf_P(buf, maxBuf, PSTR("{\"state\":{\"on\":%s,\"bri\":%u%s%s,\"alert\":\"none%s\",\"mode\":\"homeautomation\",\"reachable\":true},"
"\"type\":\"%s\",\"name\":\"%s\",\"modelid\":\"%s\",\"manufacturername\":\"Philips\",\"productname\":\"E%u"
"\",\"uniqueid\":\"%s\",\"swversion\":\"espalexa-2.7.0\"}")
@@ -219,10 +219,10 @@ private:
EA_DEBUGLN("# Responding to description.xml ... #\n");
IPAddress localIP = Network.localIP();
char s[16];
sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]);
snprintf(s, sizeof(s), "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]);
char buf[1024];
sprintf_P(buf,PSTR("<?xml version=\"1.0\" ?>"
snprintf_P(buf, sizeof(buf), PSTR("<?xml version=\"1.0\" ?>"
"<root xmlns=\"urn:schemas-upnp-org:device-1-0\">"
"<specVersion><major>1</major><minor>0</minor></specVersion>"
"<URLBase>http://%s:80/</URLBase>"
@@ -297,7 +297,7 @@ private:
char buf[1024];
sprintf_P(buf,PSTR("HTTP/1.1 200 OK\r\n"
snprintf_P(buf, sizeof(buf), PSTR("HTTP/1.1 200 OK\r\n"
"EXT:\r\n"
"CACHE-CONTROL: max-age=100\r\n" // SSDP_INTERVAL
"LOCATION: http://%s:80/description.xml\r\n"
@@ -493,7 +493,7 @@ public:
unsigned idx = decodeLightKey(devId);
EA_DEBUGLN(idx);
char buf[50];
sprintf_P(buf,PSTR("[{\"success\":{\"/lights/%u/state/\": true}}]"),devId);
snprintf_P(buf,sizeof(buf),PSTR("[{\"success\":{\"/lights/%u/state/\": true}}]"),devId);
server->send(200, "application/json", buf);
if (idx >= currentDeviceCount) return true; //return if invalid ID
EspalexaDevice* dev = devices[idx];
@@ -571,7 +571,7 @@ public:
jsonTemp += ':';
char buf[512];
deviceJsonString(devices[i], buf);
deviceJsonString(devices[i], buf, sizeof(buf)-1);
jsonTemp += buf;
if (i < currentDeviceCount-1) jsonTemp += ',';
}
@@ -588,7 +588,7 @@ public:
return true;
}
char buf[512];
deviceJsonString(devices[idx], buf);
deviceJsonString(devices[idx], buf, sizeof(buf)-1);
server->send(200, "application/json", buf);
}

View File

@@ -2,6 +2,15 @@
#include "EspalexaDevice.h"
// debug macros
#ifdef ESPALEXA_DEBUG
#define EA_DEBUG(x) Serial.print (x)
#define EA_DEBUGLN(x) Serial.println (x)
#else
#define EA_DEBUG(x)
#define EA_DEBUGLN(x)
#endif
EspalexaDevice::EspalexaDevice(){}
EspalexaDevice::EspalexaDevice(String deviceName, BrightnessCallbackFunction gnCallback, uint8_t initialValue) { //constructor for dimmable device
@@ -124,18 +133,21 @@ uint32_t EspalexaDevice::getRGB()
{
//TODO tweak a bit to match hue lamp characteristics
//based on https://gist.github.com/paulkaplan/5184275
float temp = 10000/ _ct; //kelvins = 1,000,000/mired (and that /100)
float temp = (_ct != 0) ? (10000/ _ct) : 2; //kelvins = 1,000,000/mired (and that /100) softhack007: avoid division by zero - using "2" as substitute
float r, g, b;
#ifdef ESPALEXA_DEBUG
if (_ct == 0) {EA_DEBUGLN(F("EspalexaDevice::getRGB() Warning: ct = 0!"));}
#endif
if (temp <= 66) {
r = 255;
g = temp;
g = 99.470802 * log(g) - 161.119568;
g = 99.470802 * logf(g) - 161.119568;
if (temp <= 19) {
b = 0;
} else {
b = temp-10;
b = 138.517731 * log(b) - 305.044793;
b = 138.517731 * logf(b) - 305.044793;
}
} else {
r = temp - 60;
@@ -192,9 +204,9 @@ uint32_t EspalexaDevice::getRGB()
b = 1.0f;
}
// Apply gamma correction
r = r <= 0.0031308f ? 12.92f * r : (1.0f + 0.055f) * pow(r, (1.0f / 2.4f)) - 0.055f;
g = g <= 0.0031308f ? 12.92f * g : (1.0f + 0.055f) * pow(g, (1.0f / 2.4f)) - 0.055f;
b = b <= 0.0031308f ? 12.92f * b : (1.0f + 0.055f) * pow(b, (1.0f / 2.4f)) - 0.055f;
r = r <= 0.0031308f ? 12.92f * r : (1.0f + 0.055f) * powf(r, (1.0f / 2.4f)) - 0.055f;
g = g <= 0.0031308f ? 12.92f * g : (1.0f + 0.055f) * powf(g, (1.0f / 2.4f)) - 0.055f;
b = b <= 0.0031308f ? 12.92f * b : (1.0f + 0.055f) * powf(b, (1.0f / 2.4f)) - 0.055f;
if (r > b && r > g) {
// red is biggest
@@ -328,8 +340,10 @@ void EspalexaDevice::setColor(uint8_t r, uint8_t g, uint8_t b)
float X = r * 0.664511f + g * 0.154324f + b * 0.162028f;
float Y = r * 0.283881f + g * 0.668433f + b * 0.047685f;
float Z = r * 0.000088f + g * 0.072310f + b * 0.986039f;
_x = X / (X + Y + Z);
_y = Y / (X + Y + Z);
if ((r+g+b) > 0) { // softhack007: avoid division by zero
_x = X / (X + Y + Z);
_y = Y / (X + Y + Z);
} else { _x = _y = 0.5f;} // softhack007: use default values in case of "black"
_rgb = ((r << 16) | (g << 8) | b);
_mode = EspalexaColorMode::xy;
}

View File

@@ -8,7 +8,7 @@
*/
// version code in format yymmddb (b = daily build)
#define VERSION 2305170
#define VERSION 2305241
//uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG
@@ -152,6 +152,10 @@ struct PSRAM_Allocator {
if (psramFound()) return ps_malloc(size); // use PSRAM if it exists
else return malloc(size); // fallback
}
void* reallocate(void* ptr, size_t new_size) {
if (psramFound()) return ps_realloc(ptr, new_size); // use PSRAM if it exists
else return realloc(ptr, new_size); // fallback
}
void deallocate(void* pointer) {
free(pointer);
}

View File

@@ -12,10 +12,21 @@
*/
#include "wled.h"
unsigned long lastMillis = 0; //WLEDMM
unsigned long loopCounter = 0; //WLEDMM
void setup() {
WLED::instance().setup();
}
void loop() {
//WLEDMM show loops per second
loopCounter++;
if (millis() - lastMillis >= 10000) {
USER_PRINTF("%lu lps\n",loopCounter/10);
lastMillis = millis();
loopCounter = 0;
}
WLED::instance().loop();
}

View File

@@ -364,12 +364,13 @@ void initServer()
});
#endif
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
USER_PRINTLN("Client request"); //WLEDMM: want to see if client connects to wled
USER_PRINT("Client request"); //WLEDMM: want to see if client connects to wled
#ifdef ARDUINO_ARCH_ESP32
DEBUG_PRINTF("%s min free stack %d\n", pcTaskGetTaskName(NULL), uxTaskGetStackHighWaterMark(NULL)); //WLEDMM
#endif
if (captivePortal(request)) return;
serveIndexOrWelcome(request);
USER_PRINTLN(" done"); //WLEDMM: want to see if client connects to wled
});
#ifdef WLED_ENABLE_PIXART

View File

@@ -15,13 +15,14 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp
{
if(type == WS_EVT_CONNECT){
//client connected
DEBUG_PRINTLN(F("WS client connected."));
USER_PRINTLN(F("WS client connected."));
sendDataWs(client);
} else if(type == WS_EVT_DISCONNECT){
//client disconnected
if (client->id() == wsLiveClientId) wsLiveClientId = 0;
DEBUG_PRINTLN(F("WS client disconnected."));
USER_PRINTLN(F("WS client disconnected."));
} else if(type == WS_EVT_DATA){
USER_PRINTLN(F("WS event data."));
// data packet
AwsFrameInfo * info = (AwsFrameInfo*)arg;
if(info->final && info->index == 0 && info->len == len){
@@ -97,6 +98,7 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp
void sendDataWs(AsyncWebSocketClient * client)
{
USER_PRINTF("sendDataWs\n");
if (!ws.count()) return;
AsyncWebSocketMessageBuffer * buffer;

View File

@@ -415,7 +415,7 @@ void getSettingsJS(AsyncWebServerRequest* request, byte subPage, char* dest) //W
char rf[4] = "RF"; rf[2] = 48+s; rf[3] = 0; //off refresh
char aw[4] = "AW"; aw[2] = 48+s; aw[3] = 0; //auto white mode
char wo[4] = "WO"; wo[2] = 48+s; wo[3] = 0; //swap channels
char sp[4] = "SP"; sp[2] = 48+s; sp[3] = 0; //bus clock speed
// char sp[4] = "SP"; sp[2] = 48+s; sp[3] = 0; //bus clock speed WLEDMM to do bus
oappend(SET_F("addLEDs(1);"));
uint8_t pins[5];
uint8_t nPins = bus->getPins(pins);