Merge branch 'dev' into expand-1DEffects
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
// #define MIC_LOGGER // MIC sampling & sound input debugging (serial plotter)
|
||||
// #define FFT_SAMPLING_LOG // FFT result debugging
|
||||
// #define SR_DEBUG // generic SR DEBUG messages
|
||||
// #define NO_MIC_LOGGER // exclude MIC_LOGGER from SR_DEBUG
|
||||
|
||||
|
||||
#ifdef SR_DEBUG
|
||||
#define DEBUGSR_PRINT(x) Serial.print(x)
|
||||
@@ -85,41 +85,51 @@ const float agcSampleSmooth[AGC_NUM_PRESETS] = { 1/12.f, 1/6.f, 1/16.f}; //
|
||||
static AudioSource *audioSource = nullptr;
|
||||
static volatile bool disableSoundProcessing = false; // if true, sound processing (FFT, filters, AGC) will be suspended. "volatile" as its shared between tasks.
|
||||
|
||||
// audioreactive variables shared with FFT task
|
||||
static float micDataReal = 0.0f; // MicIn data with full 24bit resolution - lowest 8bit after decimal point
|
||||
static float sampleReal = 0.0f; // "sampleRaw" as float, to provide bits that are lost otherwise (before amplification by sampleGain or inputLevel). Needed for AGC.
|
||||
static float multAgc = 1.0f; // sample * multAgc = sampleAgc. Our AGC multiplier
|
||||
static float sampleAvg = 0.0f; // Smoothed Average sample - sampleAvg < 1 means "quiet" (simple noise gate)
|
||||
|
||||
// peak detection
|
||||
static bool samplePeak = false; // Boolean flag for peak - used in effects. Responding routine may reset this flag. Auto-reset after strip.getMinShowDelay()
|
||||
static uint8_t maxVol = 10; // Reasonable value for constant volume for 'peak detector', as it won't always trigger (deprecated)
|
||||
static uint8_t binNum = 8; // Used to select the bin for FFT based beat detection (deprecated)
|
||||
static bool udpSamplePeak = false; // Boolean flag for peak. Set at the same tiem as samplePeak, but reset by transmitAudioData
|
||||
static unsigned long timeOfPeak = 0; // time of last sample peak detection.
|
||||
static void detectSamplePeak(void); // peak detection function (needs scaled FFT reasults in vReal[])
|
||||
static void autoResetPeak(void); // peak auto-reset function
|
||||
|
||||
static int16_t sampleRaw = 0; // Current sample. Must only be updated ONCE!!! (amplified mic value by sampleGain and inputLevel)
|
||||
static int16_t rawSampleAgc = 0; // not smoothed AGC sample
|
||||
static float sampleAvg = 0.0f; // Smoothed Average sampleRaw
|
||||
static float sampleAgc = 0.0f; // Smoothed AGC sample
|
||||
|
||||
////////////////////
|
||||
// Begin FFT Code //
|
||||
////////////////////
|
||||
|
||||
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
||||
// lib_deps += https://github.com/kosme/arduinoFFT#develop @ 1.9.2
|
||||
#define FFT_SPEED_OVER_PRECISION // enables use of reciprocals (1/x etc), and an a few other speedups
|
||||
#define FFT_SQRT_APPROXIMATION // enables "quake3" style inverse sqrt
|
||||
#define sqrt(x) sqrtf(x) // little hack that reduces FFT time by 50% on ESP32 (as alternative to FFT_SQRT_APPROXIMATION)
|
||||
#else
|
||||
// lib_deps += https://github.com/blazoncek/arduinoFFT.git
|
||||
#endif
|
||||
#include "arduinoFFT.h"
|
||||
|
||||
// FFT Variables
|
||||
// FFT Output variables shared with animations
|
||||
#define NUM_GEQ_CHANNELS 16 // number of frequency channels. Don't change !!
|
||||
static float FFT_MajorPeak = 1.0f; // FFT: strongest (peak) frequency
|
||||
static float FFT_Magnitude = 0.0f; // FFT: volume (magnitude) of peak frequency
|
||||
static uint8_t fftResult[NUM_GEQ_CHANNELS]= {0};// Our calculated freq. channel result table to be used by effects
|
||||
|
||||
// FFT Constants
|
||||
constexpr uint16_t samplesFFT = 512; // Samples in an FFT batch - This value MUST ALWAYS be a power of 2
|
||||
constexpr uint16_t samplesFFT_2 = 256; // meaningfull part of FFT results - only the "lower half" contains useful information.
|
||||
|
||||
static float FFT_MajorPeak = 1.0f;
|
||||
static float FFT_Magnitude = 0.0f;
|
||||
|
||||
// These are the input and output vectors. Input vectors receive computed results from FFT.
|
||||
static float vReal[samplesFFT] = {0.0f};
|
||||
static float vImag[samplesFFT] = {0.0f};
|
||||
static float fftBin[samplesFFT_2] = {0.0f};
|
||||
static float vReal[samplesFFT] = {0.0f}; // FFT sample inputs / freq output - these are our raw result bins
|
||||
static float vImag[samplesFFT] = {0.0f}; // imaginary parts
|
||||
|
||||
// the following are observed values, supported by a bit of "educated guessing"
|
||||
//#define FFT_DOWNSCALE 0.65f // 20kHz - downscaling factor for FFT results - "Flat-Top" window @20Khz, old freq channels
|
||||
|
||||
#define FFT_DOWNSCALE 0.46f // downscaling factor for FFT results - for "Flat-Top" window @22Khz, new freq channels
|
||||
#define LOG_256 5.54517744
|
||||
|
||||
@@ -128,13 +138,11 @@ static float windowWeighingFactors[samplesFFT] = {0.0f};
|
||||
#endif
|
||||
|
||||
// Try and normalize fftBin values to a max of 4096, so that 4096/16 = 256.
|
||||
// Oh, and bins 0,1,2 are no good, so we'll zero them out.
|
||||
static float fftCalc[16] = {0.0f};
|
||||
static uint8_t fftResult[16] = {0}; // Our calculated result table, which we feed to the animations.
|
||||
static float fftCalc[NUM_GEQ_CHANNELS] = {0.0f};
|
||||
static float fftAvg[NUM_GEQ_CHANNELS] = {0.0f}; // Calculated frequency channel results, with smoothing (used if dynamics limiter is ON)
|
||||
#ifdef SR_DEBUG
|
||||
static float fftResultMax[16] = {0.0f}; // A table used for testing to determine how our post-processing is working.
|
||||
static float fftResultMax[NUM_GEQ_CHANNELS] = {0.0f}; // A table used for testing to determine how our post-processing is working.
|
||||
#endif
|
||||
static float fftAvg[16] = {0.0f};
|
||||
|
||||
#ifdef WLED_DEBUG
|
||||
static unsigned long fftTime = 0;
|
||||
@@ -142,7 +150,7 @@ static unsigned long sampleTime = 0;
|
||||
#endif
|
||||
|
||||
// Table of multiplication factors so that we can even out the frequency response.
|
||||
static float fftResultPink[16] = { 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f, 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f };
|
||||
static float fftResultPink[NUM_GEQ_CHANNELS] = { 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f, 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f };
|
||||
|
||||
// Create FFT object
|
||||
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
||||
@@ -161,12 +169,12 @@ static float mapf(float x, float in_min, float in_max, float out_min, float out_
|
||||
static float fftAddAvg(int from, int to) {
|
||||
float result = 0.0f;
|
||||
for (int i = from; i <= to; i++) {
|
||||
result += fftBin[i];
|
||||
result += vReal[i];
|
||||
}
|
||||
return result / float(to - from + 1);
|
||||
}
|
||||
|
||||
// FFT main code
|
||||
// FFT main task
|
||||
void FFTcode(void * parameter)
|
||||
{
|
||||
DEBUGSR_PRINT("FFT started on core: "); DEBUGSR_PRINTLN(xPortGetCoreID());
|
||||
@@ -237,9 +245,9 @@ void FFTcode(void * parameter)
|
||||
#endif
|
||||
FFT_MajorPeak = constrain(FFT_MajorPeak, 1.0f, 11025.0f); // restrict value to range expected by effects
|
||||
|
||||
for (int i = 0; i < samplesFFT_2; i++) { // Values for bins 0 and 1 are WAY too large. Might as well start at 3.
|
||||
for (int i = 0; i < samplesFFT; i++) {
|
||||
float t = fabsf(vReal[i]); // just to be sure - values in fft bins should be positive any way
|
||||
fftBin[i] = t / 16.0f; // Reduce magnitude. Want end result to be linear and ~4096 max.
|
||||
vReal[i] = t / 16.0f; // Reduce magnitude. Want end result to be scaled linear and ~4096 max.
|
||||
} // for()
|
||||
|
||||
// mapping of FFT result bins to frequency channels
|
||||
@@ -292,14 +300,14 @@ void FFTcode(void * parameter)
|
||||
// don't use the last bins from 216 to 255. They are usually contaminated by aliasing (aka noise)
|
||||
#endif
|
||||
} else { // noise gate closed - just decay old values
|
||||
for (int i=0; i < 16; i++) {
|
||||
for (int i=0; i < NUM_GEQ_CHANNELS; i++) {
|
||||
fftCalc[i] *= 0.85f; // decay to zero
|
||||
if (fftCalc[i] < 4.0f) fftCalc[i] = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
// post-processing of frequency channels (pink noise adjustment, AGC, smooting, scaling)
|
||||
for (int i=0; i < 16; i++) {
|
||||
for (int i=0; i < NUM_GEQ_CHANNELS; i++) {
|
||||
|
||||
if (sampleAvg > 1) { // noise gate open
|
||||
// Adjustment for frequency curves.
|
||||
@@ -378,11 +386,43 @@ void FFTcode(void * parameter)
|
||||
fftTime = (fftTimeInMillis*3 + fftTime*7)/10; // smooth
|
||||
}
|
||||
#endif
|
||||
// run peak detection
|
||||
autoResetPeak();
|
||||
detectSamplePeak();
|
||||
|
||||
} // for(;;)
|
||||
} // FFTcode()
|
||||
} // for(;;)ever
|
||||
} // FFTcode() task end
|
||||
|
||||
|
||||
////////////////////
|
||||
// Peak detection //
|
||||
////////////////////
|
||||
|
||||
// peak detection is called from FFT task when vReal[] contains valid FFT results
|
||||
static void detectSamplePeak(void) {
|
||||
// Poor man's beat detection by seeing if sample > Average + some value.
|
||||
if ((sampleAvg > 1) && (maxVol > 0) && (binNum > 1) && (vReal[binNum] > maxVol) && ((millis() - timeOfPeak) > 100)) {
|
||||
// This goes through ALL of the 255 bins - but ignores stupid settings
|
||||
// Then we got a peak, else we don't. The peak has to time out on its own in order to support UDP sound sync.
|
||||
samplePeak = true;
|
||||
timeOfPeak = millis();
|
||||
udpSamplePeak = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void autoResetPeak(void) {
|
||||
uint16_t MinShowDelay = MAX(50, strip.getMinShowDelay()); // Fixes private class variable compiler error. Unsure if this is the correct way of fixing the root problem. -THATDONFC
|
||||
if (millis() - timeOfPeak > MinShowDelay) { // Auto-reset of samplePeak after a complete frame has passed.
|
||||
samplePeak = false;
|
||||
if (audioSyncEnabled == 0) udpSamplePeak = false; // this is normally reset by transmitAudioData
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
////////////////////
|
||||
// usermod class //
|
||||
////////////////////
|
||||
|
||||
//class name. Use something descriptive and leave the ": public Usermod" part :)
|
||||
class AudioReactive : public Usermod {
|
||||
|
||||
@@ -453,40 +493,36 @@ class AudioReactive : public Usermod {
|
||||
double FFT_MajorPeak; // 08 Bytes
|
||||
};
|
||||
|
||||
WiFiUDP fftUdp;
|
||||
|
||||
// set your config variables to their boot default value (this can also be done in readFromConfig() or a constructor if you prefer)
|
||||
bool enabled = false;
|
||||
bool initDone = false;
|
||||
|
||||
const uint16_t delayMs = 10; // I don't want to sample too often and overload WLED
|
||||
// variables for UDP sound sync
|
||||
WiFiUDP fftUdp; // UDP object for sound sync (from WiFi UDP, not Async UDP!)
|
||||
bool udpSyncConnected = false;// UDP connection status -> true if connected to multicast group
|
||||
unsigned long lastTime = 0; // last time of running UDP Microphone Sync
|
||||
const uint16_t delayMs = 10; // I don't want to sample too often and overload WLED
|
||||
uint16_t audioSyncPort= 11988;// default port for UDP sound sync
|
||||
|
||||
// used for AGC
|
||||
int last_soundAgc = -1; // used to detect AGC mode change (for resetting AGC internal error buffers)
|
||||
double control_integrated = 0.0; // persistent across calls to agcAvg(); "integrator control" = accumulated error
|
||||
|
||||
// variables used by getSample() and agcAvg()
|
||||
int16_t micIn = 0; // Current sample starts with negative values and large values, which is why it's 16 bit signed
|
||||
double sampleMax = 0.0; // Max sample over a few seconds. Needed for AGC controler.
|
||||
float micLev = 0.0f; // Used to convert returned value to have '0' as minimum. A leveller
|
||||
float expAdjF = 0.0f; // Used for exponential filter.
|
||||
float sampleReal = 0.0f; // "sampleRaw" as float, to provide bits that are lost otherwise (before amplification by sampleGain or inputLevel). Needed for AGC.
|
||||
int16_t sampleRaw = 0; // Current sample. Must only be updated ONCE!!! (amplified mic value by sampleGain and inputLevel)
|
||||
int16_t rawSampleAgc = 0; // not smoothed AGC sample
|
||||
float sampleAgc = 0.0f; // Smoothed AGC sample
|
||||
|
||||
// variables used in effects
|
||||
uint8_t maxVol = 10; // Reasonable value for constant volume for 'peak detector', as it won't always trigger (deprecated)
|
||||
uint8_t binNum = 8; // Used to select the bin for FFT based beat detection (deprecated)
|
||||
bool samplePeak = 0; // Boolean flag for peak. Responding routine must reset this flag
|
||||
float volumeSmth = 0.0f; // either sampleAvg or sampleAgc depending on soundAgc; smoothed sample
|
||||
int16_t volumeRaw = 0; // either sampleRaw or rawSampleAgc depending on soundAgc
|
||||
float my_magnitude =0.0f; // FFT_Magnitude, scaled by multAgc
|
||||
|
||||
bool udpSamplePeak = 0; // Boolean flag for peak. Set at the same tiem as samplePeak, but reset by transmitAudioData
|
||||
int16_t micIn = 0; // Current sample starts with negative values and large values, which is why it's 16 bit signed
|
||||
double sampleMax = 0.0; // Max sample over a few seconds. Needed for AGC controler.
|
||||
uint32_t timeOfPeak = 0;
|
||||
unsigned long lastTime = 0; // last time of running UDP Microphone Sync
|
||||
float micLev = 0.0f; // Used to convert returned value to have '0' as minimum. A leveller
|
||||
float expAdjF = 0.0f; // Used for exponential filter.
|
||||
|
||||
bool udpSyncConnected = false;
|
||||
uint16_t audioSyncPort = 11988;
|
||||
|
||||
// used for AGC
|
||||
uint8_t lastMode = 0; // last known effect mode
|
||||
int last_soundAgc = -1;
|
||||
double control_integrated = 0.0; // persistent across calls to agcAvg(); "integrator control" = accumulated error
|
||||
unsigned long last_update_time = 0;
|
||||
unsigned long last_kick_time = 0;
|
||||
uint8_t last_user_inputLevel = 0;
|
||||
|
||||
// used to feed "Info" Page
|
||||
unsigned long last_UDPTime = 0; // time of last valid UDP sound sync datapacket
|
||||
float maxSample5sec = 0.0f; // max sample (after AGC) in last 5 seconds
|
||||
@@ -503,6 +539,10 @@ class AudioReactive : public Usermod {
|
||||
static const char UDP_SYNC_HEADER_v1[];
|
||||
|
||||
// private methods
|
||||
|
||||
////////////////////
|
||||
// Debug support //
|
||||
////////////////////
|
||||
void logAudio()
|
||||
{
|
||||
#ifdef MIC_LOGGER
|
||||
@@ -525,7 +565,7 @@ class AudioReactive : public Usermod {
|
||||
|
||||
#ifdef FFT_SAMPLING_LOG
|
||||
#if 0
|
||||
for(int i=0; i<16; i++) {
|
||||
for(int i=0; i<NUM_GEQ_CHANNELS; i++) {
|
||||
Serial.print(fftResult[i]);
|
||||
Serial.print("\t");
|
||||
}
|
||||
@@ -551,11 +591,11 @@ class AudioReactive : public Usermod {
|
||||
|
||||
int maxVal = minimumMaxVal;
|
||||
int minVal = 0;
|
||||
for(int i = 0; i < 16; i++) {
|
||||
for(int i = 0; i < NUM_GEQ_CHANNELS; i++) {
|
||||
if(fftResult[i] > maxVal) maxVal = fftResult[i];
|
||||
if(fftResult[i] < minVal) minVal = fftResult[i];
|
||||
}
|
||||
for(int i = 0; i < 16; i++) {
|
||||
for(int i = 0; i < NUM_GEQ_CHANNELS; i++) {
|
||||
Serial.print(i); Serial.print(":");
|
||||
Serial.printf("%04ld ", map(fftResult[i], 0, (scaleValuesFromCurrentMaxVal ? maxVal : defaultScalingFromHighValue), (mapValuesToPlotterSpace*i*scalingToHighValue)+0, (mapValuesToPlotterSpace*i*scalingToHighValue)+scalingToHighValue-1));
|
||||
}
|
||||
@@ -574,6 +614,10 @@ class AudioReactive : public Usermod {
|
||||
} // logAudio()
|
||||
|
||||
|
||||
//////////////////////
|
||||
// Audio Processing //
|
||||
//////////////////////
|
||||
|
||||
/*
|
||||
* A "PI controller" multiplier to automatically adjust sound sensitivity.
|
||||
*
|
||||
@@ -668,7 +712,7 @@ class AudioReactive : public Usermod {
|
||||
last_soundAgc = soundAgc;
|
||||
} // agcAvg()
|
||||
|
||||
|
||||
// post-processing and filtering of MIC sample (micDataReal) from FFTcode()
|
||||
void getSample()
|
||||
{
|
||||
float sampleAdj; // Gain adjusted sample value
|
||||
@@ -729,24 +773,6 @@ class AudioReactive : public Usermod {
|
||||
if (sampleMax < 0.5f) sampleMax = 0.0f;
|
||||
|
||||
sampleAvg = ((sampleAvg * 15.0f) + sampleAdj) / 16.0f; // Smooth it out over the last 16 samples.
|
||||
|
||||
// Fixes private class variable compiler error. Unsure if this is the correct way of fixing the root problem. -THATDONFC
|
||||
uint16_t MinShowDelay = strip.getMinShowDelay();
|
||||
|
||||
if (millis() - timeOfPeak > MinShowDelay) { // Auto-reset of samplePeak after a complete frame has passed.
|
||||
samplePeak = false;
|
||||
udpSamplePeak = false;
|
||||
}
|
||||
//if (userVar1 == 0) samplePeak = 0;
|
||||
|
||||
// Poor man's beat detection by seeing if sample > Average + some value.
|
||||
if ((maxVol > 0) && (binNum > 1) && (fftBin[binNum] > maxVol) && (millis() > (timeOfPeak + 100))) {
|
||||
// This goes through ALL of the 255 bins - but ignores stupid settings
|
||||
// Then we got a peak, else we don't. The peak has to time out on its own in order to support UDP sound sync.
|
||||
samplePeak = true;
|
||||
timeOfPeak = millis();
|
||||
udpSamplePeak = true;
|
||||
}
|
||||
} // getSample()
|
||||
|
||||
|
||||
@@ -781,6 +807,26 @@ class AudioReactive : public Usermod {
|
||||
}
|
||||
|
||||
|
||||
//////////////////////
|
||||
// UDP Sound Sync //
|
||||
//////////////////////
|
||||
|
||||
// try to establish UDP sound sync connection
|
||||
void connectUDPSoundSync(void) {
|
||||
// This function tries to establish a UDP sync connection if needed
|
||||
// necessary as we also want to transmit in "AP Mode", but the standard "connected()" callback only reacts on STA connection
|
||||
static unsigned long last_connection_attempt = 0;
|
||||
|
||||
if ((audioSyncPort <= 0) || ((audioSyncEnabled & 0x03) == 0)) return; // Sound Sync not enabled
|
||||
if (udpSyncConnected) return; // already connected
|
||||
if (!(apActive || interfacesInited)) return; // neither AP nor other connections availeable
|
||||
if (millis() - last_connection_attempt < 15000) return; // only try once in 15 seconds
|
||||
|
||||
// if we arrive here, we need a UDP connection but don't have one
|
||||
last_connection_attempt = millis();
|
||||
connected(); // try to start UDP
|
||||
}
|
||||
|
||||
void transmitAudioData()
|
||||
{
|
||||
if (!udpSyncConnected) return;
|
||||
@@ -795,7 +841,7 @@ class AudioReactive : public Usermod {
|
||||
udpSamplePeak = false; // Reset udpSamplePeak after we've transmitted it
|
||||
transmitData.reserved1 = 0;
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
for (int i = 0; i < NUM_GEQ_CHANNELS; i++) {
|
||||
transmitData.fftResult[i] = (uint8_t)constrain(fftResult[i], 0, 254);
|
||||
}
|
||||
|
||||
@@ -808,12 +854,10 @@ class AudioReactive : public Usermod {
|
||||
return;
|
||||
} // transmitAudioData()
|
||||
|
||||
|
||||
static bool isValidUdpSyncVersion(const char *header) {
|
||||
return strncmp_P(header, PSTR(UDP_SYNC_HEADER), 6) == 0;
|
||||
}
|
||||
|
||||
|
||||
bool receiveAudioData() // check & process new data. return TRUE in case that new audio data was received.
|
||||
{
|
||||
if (!udpSyncConnected) return false;
|
||||
@@ -839,13 +883,7 @@ class AudioReactive : public Usermod {
|
||||
sampleAgc = volumeSmth;
|
||||
multAgc = 1.0f;
|
||||
|
||||
// auto-reset sample peak. Need to do it here, because getSample() is not running
|
||||
uint16_t MinShowDelay = strip.getMinShowDelay();
|
||||
if (millis() - timeOfPeak > MinShowDelay) { // Auto-reset of samplePeak after a complete frame has passed.
|
||||
samplePeak = false;
|
||||
udpSamplePeak = false;
|
||||
}
|
||||
//if (userVar1 == 0) samplePeak = 0;
|
||||
autoResetPeak();
|
||||
// Only change samplePeak IF it's currently false.
|
||||
// If it's true already, then the animation still needs to respond.
|
||||
if (!samplePeak) {
|
||||
@@ -855,7 +893,7 @@ class AudioReactive : public Usermod {
|
||||
}
|
||||
|
||||
//These values are only available on the ESP32
|
||||
for (int i = 0; i < 16; i++) fftResult[i] = receivedPacket->fftResult[i];
|
||||
for (int i = 0; i < NUM_GEQ_CHANNELS; i++) fftResult[i] = receivedPacket->fftResult[i];
|
||||
|
||||
my_magnitude = fmaxf(receivedPacket->FFT_Magnitude, 0.0f);
|
||||
FFT_Magnitude = my_magnitude;
|
||||
@@ -869,6 +907,10 @@ class AudioReactive : public Usermod {
|
||||
}
|
||||
|
||||
|
||||
//////////////////////
|
||||
// usermod functions//
|
||||
//////////////////////
|
||||
|
||||
public:
|
||||
//Functions called by WLED or other usermods
|
||||
|
||||
@@ -961,6 +1003,7 @@ class AudioReactive : public Usermod {
|
||||
disableSoundProcessing = true;
|
||||
}
|
||||
|
||||
if (enabled) connectUDPSoundSync();
|
||||
initDone = true;
|
||||
}
|
||||
|
||||
@@ -971,6 +1014,11 @@ class AudioReactive : public Usermod {
|
||||
*/
|
||||
void connected()
|
||||
{
|
||||
if (udpSyncConnected) { // clean-up: if open, close old UDP sync connection
|
||||
udpSyncConnected = false;
|
||||
fftUdp.stop();
|
||||
}
|
||||
|
||||
if (audioSyncPort > 0 && (audioSyncEnabled & 0x03)) {
|
||||
#ifndef ESP8266
|
||||
udpSyncConnected = fftUdp.beginMulticast(IPAddress(239, 0, 0, 1), audioSyncPort);
|
||||
@@ -1004,7 +1052,7 @@ class AudioReactive : public Usermod {
|
||||
if (strip.isUpdating() && (millis() - lastUMRun < 2)) return; // be nice, but not too nice
|
||||
|
||||
// suspend local sound processing when "real time mode" is active (E131, UDP, ADALIGHT, ARTNET)
|
||||
if ( (realtimeOverride == REALTIME_OVERRIDE_NONE) // please odd other orrides here if needed
|
||||
if ( (realtimeOverride == REALTIME_OVERRIDE_NONE) // please add other overrides here if needed
|
||||
&&( (realtimeMode == REALTIME_MODE_GENERIC)
|
||||
||(realtimeMode == REALTIME_MODE_E131)
|
||||
||(realtimeMode == REALTIME_MODE_UDP)
|
||||
@@ -1020,7 +1068,7 @@ class AudioReactive : public Usermod {
|
||||
disableSoundProcessing = true;
|
||||
} else {
|
||||
#ifdef WLED_DEBUG
|
||||
if ((disableSoundProcessing == true) && (audioSyncEnabled == 0)) { // we just switched to "disabled"
|
||||
if ((disableSoundProcessing == true) && (audioSyncEnabled == 0) && audioSource->isInitialized()) { // we just switched to "enabled"
|
||||
DEBUG_PRINTLN("[AR userLoop] realtime mode ended - audio processing resumed.");
|
||||
DEBUG_PRINTF( " RealtimeMode = %d; RealtimeOverride = %d\n", int(realtimeMode), int(realtimeOverride));
|
||||
}
|
||||
@@ -1067,9 +1115,13 @@ class AudioReactive : public Usermod {
|
||||
if (soundAgc) my_magnitude *= multAgc;
|
||||
if (volumeSmth < 1 ) my_magnitude = 0.001f; // noise gate closed - mute
|
||||
|
||||
limitSampleDynamics(); // optional - makes volumeSmth very smooth and fluent
|
||||
}
|
||||
limitSampleDynamics();
|
||||
} // if (!disableSoundProcessing)
|
||||
|
||||
autoResetPeak(); // auto-reset sample peak after strip minShowDelay
|
||||
if (!udpSyncConnected) udpSamplePeak = false; // reset UDP samplePeak while UDP is unconnected
|
||||
|
||||
connectUDPSoundSync(); // ensure we have a connection - if needed
|
||||
|
||||
// UDP Microphone Sync - receive mode
|
||||
if ((audioSyncEnabled & 0x02) && udpSyncConnected) {
|
||||
@@ -1092,7 +1144,7 @@ class AudioReactive : public Usermod {
|
||||
}
|
||||
#endif
|
||||
|
||||
// peak sample from last 5 seconds
|
||||
// Info Page: keep max sample from last 5 seconds
|
||||
if ((millis() - sampleMaxTimer) > CYCLE_SAMPLEMAX) {
|
||||
sampleMaxTimer = millis();
|
||||
maxSample5sec = (0.15 * maxSample5sec) + 0.85 *((soundAgc) ? sampleAgc : sampleAvg); // reset, and start with some smoothing
|
||||
@@ -1100,6 +1152,7 @@ class AudioReactive : public Usermod {
|
||||
} else {
|
||||
if ((sampleAvg >= 1)) maxSample5sec = fmaxf(maxSample5sec, (soundAgc) ? rawSampleAgc : sampleRaw); // follow maximum volume
|
||||
}
|
||||
|
||||
//UDP Microphone Sync - transmit mode
|
||||
if ((audioSyncEnabled & 0x01) && (millis() - lastTime > 20)) {
|
||||
// Only run the transmit code IF we're in Transmit mode
|
||||
@@ -1137,8 +1190,9 @@ class AudioReactive : public Usermod {
|
||||
memset(fftCalc, 0, sizeof(fftCalc));
|
||||
memset(fftAvg, 0, sizeof(fftAvg));
|
||||
memset(fftResult, 0, sizeof(fftResult));
|
||||
for(int i=(init?0:1); i<16; i+=2) fftResult[i] = 16; // make a tiny pattern
|
||||
for(int i=(init?0:1); i<NUM_GEQ_CHANNELS; i+=2) fftResult[i] = 16; // make a tiny pattern
|
||||
inputLevel = 128; // resset level slider to default
|
||||
autoResetPeak();
|
||||
|
||||
if (init && FFT_Task) {
|
||||
vTaskSuspend(FFT_Task); // update is about to begin, disable task to prevent crash
|
||||
@@ -1186,6 +1240,10 @@ class AudioReactive : public Usermod {
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////
|
||||
// Settings and Info Page //
|
||||
////////////////////////////
|
||||
|
||||
/*
|
||||
* addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API.
|
||||
* Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI.
|
||||
|
||||
@@ -1927,10 +1927,7 @@ uint16_t mode_palette()
|
||||
for (int i = 0; i < SEGLEN; i++)
|
||||
{
|
||||
uint8_t colorIndex = (i * 255 / SEGLEN) - counter;
|
||||
|
||||
if (noWrap) colorIndex = map(colorIndex, 0, 255, 0, 240); //cut off blend at palette "end"
|
||||
|
||||
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(colorIndex, false, true, 255));
|
||||
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(colorIndex, false, noWrap, 255));
|
||||
}
|
||||
return FRAMETIME;
|
||||
}
|
||||
@@ -3528,7 +3525,7 @@ uint16_t mode_tetrix(void) {
|
||||
drop->brick = 0; // reset brick size (no more growing)
|
||||
if (drop->step > millis()) {
|
||||
// allow fading of virtual strip
|
||||
for (int i=0; i<SEGLEN; i++) SEGMENT.blendPixelColor(indexToVStrip(i, stripNr), SEGCOLOR(1), 25); // 10% blend with Bg color
|
||||
for (int i=0; i<SEGLEN; i++) SEGMENT.blendPixelColor(indexToVStrip(i, stripNr), SEGCOLOR(1), 25); // 10% blend
|
||||
} else {
|
||||
drop->stack = 0; // reset brick stack size
|
||||
drop->step = 0; // proceed with next brick
|
||||
@@ -5842,12 +5839,13 @@ uint16_t mode_2Dscrollingtext(void) {
|
||||
|
||||
int letterWidth;
|
||||
int letterHeight;
|
||||
switch (map(SEGMENT.custom2, 0, 255, 1, 4)) {
|
||||
switch (map(SEGMENT.custom2, 0, 255, 1, 5)) {
|
||||
default:
|
||||
case 1: letterWidth = 5; letterHeight = 8; break;
|
||||
case 2: letterWidth = 6; letterHeight = 8; break;
|
||||
case 3: letterWidth = 7; letterHeight = 9; break;
|
||||
case 4: letterWidth = 5; letterHeight = 12; break;
|
||||
case 1: letterWidth = 4; letterHeight = 6; break;
|
||||
case 2: letterWidth = 5; letterHeight = 8; break;
|
||||
case 3: letterWidth = 6; letterHeight = 8; break;
|
||||
case 4: letterWidth = 7; letterHeight = 9; break;
|
||||
case 5: letterWidth = 5; letterHeight = 12; break;
|
||||
}
|
||||
const int yoffset = map(SEGMENT.intensity, 0, 255, -rows/2, rows/2) + (rows-letterHeight)/2;
|
||||
char text[33] = {'\0'};
|
||||
@@ -5887,7 +5885,7 @@ uint16_t mode_2Dscrollingtext(void) {
|
||||
|
||||
return FRAMETIME;
|
||||
}
|
||||
static const char _data_FX_MODE_2DSCROLLTEXT[] PROGMEM = "Scrolling Text@!,Y Offset,Trail,Font size;!,!;!;ix=96,c1=0,rev=0,mi=0,rY=0,mY=0,2d";
|
||||
static const char _data_FX_MODE_2DSCROLLTEXT[] PROGMEM = "Scrolling Text@!,Y Offset,Trail,Font size;!,!;!;ix=128,c1=0,rev=0,mi=0,rY=0,mY=0,2d";
|
||||
|
||||
|
||||
////////////////////////////
|
||||
@@ -5924,7 +5922,6 @@ static const char _data_FX_MODE_2DDRIFTROSE[] PROGMEM = "Drift Rose@Fade,Blur;;;
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/******************** audio enhanced routines ************************/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -6251,7 +6248,7 @@ uint16_t mode_gravcentric(void) { // Gravcentric. By Andrew
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_gravcentric()
|
||||
static const char _data_FX_MODE_GRAVCENTRIC[] PROGMEM = "Gravcentric@Rate of fall,Sensitivity;!;!;ix=128,mp12=2,ssim=0,1d,vo"; // Circle, Beatsin
|
||||
static const char _data_FX_MODE_GRAVCENTRIC[] PROGMEM = "Gravcentric@Rate of fall,Sensitivity;!;!;ix=128,mp12=3,ssim=0,1d,vo"; // Corner, Beatsin
|
||||
|
||||
|
||||
///////////////////////
|
||||
@@ -6387,7 +6384,7 @@ uint16_t mode_midnoise(void) { // Midnoise. By Andrew Tuline.
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_midnoise()
|
||||
static const char _data_FX_MODE_MIDNOISE[] PROGMEM = "Midnoise@Fade rate,Maximum length;,!;!;ix=128,mp12=2,ssim=0,1d,vo"; // Circle, Beatsin
|
||||
static const char _data_FX_MODE_MIDNOISE[] PROGMEM = "Midnoise@Fade rate,Maximum length;,!;!;ix=128,mp12=1,ssim=0,1d,vo"; // Bar, Beatsin
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -6512,7 +6509,7 @@ uint16_t mode_plasmoid(void) { // Plasmoid. By Andrew Tuline.
|
||||
}
|
||||
float volumeSmth = *(float*) um_data->u_data[0];
|
||||
|
||||
SEGMENT.fadeToBlackBy(64);
|
||||
SEGMENT.fadeToBlackBy(32);
|
||||
|
||||
plasmoip->thisphase += beatsin8(6,-4,4); // You can change direction and speed individually.
|
||||
plasmoip->thatphase += beatsin8(7,-4,4); // Two phase values to make a complex pattern. By Andrew Tuline.
|
||||
@@ -6608,11 +6605,6 @@ uint16_t mode_puddles(void) { // Puddles. By Andrew Tuline.
|
||||
static const char _data_FX_MODE_PUDDLES[] PROGMEM = "Puddles@Fade rate,Puddle size;!,!;!;mp12=0,ssim=0,1d,vo"; // Pixels, Beatsin
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/******************** audio only routines ************************/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#ifdef USERMOD_AUDIOREACTIVE
|
||||
|
||||
//////////////////////
|
||||
// * PIXELS //
|
||||
//////////////////////
|
||||
@@ -6664,7 +6656,8 @@ uint16_t mode_blurz(void) { // Blurz. By Andrew Tuline.
|
||||
SEGENV.aux0 = 0;
|
||||
}
|
||||
|
||||
SEGMENT.fade_out(SEGMENT.speed);
|
||||
int fadeoutDelay = (256 - SEGMENT.speed) / 32;
|
||||
if ((fadeoutDelay <= 1 ) || ((SEGENV.call % fadeoutDelay) == 0)) SEGMENT.fade_out(SEGMENT.speed);
|
||||
|
||||
SEGENV.step += FRAMETIME;
|
||||
if (SEGENV.step > SPEED_FORMULA_L) {
|
||||
@@ -6732,7 +6725,9 @@ uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN.
|
||||
float my_magnitude = *(float*) um_data->u_data[5] / 4.0f;
|
||||
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||
|
||||
SEGMENT.fade_out(SEGMENT.speed);
|
||||
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
|
||||
int fadeoutDelay = (256 - SEGMENT.speed) / 32;
|
||||
if ((fadeoutDelay <= 1 ) || ((SEGENV.call % fadeoutDelay) == 0)) SEGMENT.fade_out(SEGMENT.speed);
|
||||
|
||||
int locn = (log10f((float)FFT_MajorPeak) - 1.78f) * (float)SEGLEN/(MAX_FREQ_LOG10 - 1.78f); // log10 frequency range is from 1.78 to 3.71. Let's scale to SEGLEN.
|
||||
if (locn < 1) locn = 0; // avoid underflow
|
||||
@@ -6747,7 +6742,7 @@ uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN.
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_freqmap()
|
||||
static const char _data_FX_MODE_FREQMAP[] PROGMEM = "Freqmap@Fade rate,Starting color;,!;!;mp12=2,ssim=0,1d,fr"; // Circle, Beatsin
|
||||
static const char _data_FX_MODE_FREQMAP[] PROGMEM = "Freqmap@Fade rate,Starting color;,!;!;mp12=0,ssim=0,1d,fr"; // Pixels, Beatsin
|
||||
|
||||
|
||||
///////////////////////
|
||||
@@ -6802,7 +6797,7 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_freqmatrix()
|
||||
static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Time delay,Sound effect,Low bin,High bin,Sensivity;;;mp12=0,ssim=0,1d,fr"; // Pixels, Beatsin
|
||||
static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Time delay,Sound effect,Low bin,High bin,Sensivity;;;mp12=3,ssim=0,1d,fr"; // Corner, Beatsin
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -6823,7 +6818,10 @@ uint16_t mode_freqpixels(void) { // Freqpixel. By Andrew Tuline.
|
||||
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||
|
||||
uint16_t fadeRate = 2*SEGMENT.speed - SEGMENT.speed*SEGMENT.speed/255; // Get to 255 as quick as you can.
|
||||
SEGMENT.fade_out(fadeRate);
|
||||
|
||||
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
|
||||
int fadeoutDelay = (256 - SEGMENT.speed) / 64;
|
||||
if ((fadeoutDelay <= 1 ) || ((SEGENV.call % fadeoutDelay) == 0)) SEGMENT.fade_out(fadeRate);
|
||||
|
||||
for (int i=0; i < SEGMENT.intensity/32+1; i++) {
|
||||
uint16_t locn = random16(0,SEGLEN);
|
||||
@@ -6955,7 +6953,7 @@ uint16_t mode_gravfreq(void) { // Gravfreq. By Andrew Tuline.
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_gravfreq()
|
||||
static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sensivity;,!;!;ix=128,mp12=2,ssim=0,1d,fr"; // Circle, Beatsin
|
||||
static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sensivity;,!;!;ix=128,mp12=0,ssim=0,1d,fr"; // Pixels, Beatsin
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -6969,7 +6967,10 @@ uint16_t mode_noisemove(void) { // Noisemove. By: Andrew Tuli
|
||||
}
|
||||
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
|
||||
|
||||
SEGMENT.fade_out(224); // Just in case something doesn't get faded.
|
||||
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
|
||||
//SEGMENT.fade_out(224); // Just in case something doesn't get faded.
|
||||
int fadeoutDelay = (256 - SEGMENT.speed) / 96;
|
||||
if ((fadeoutDelay <= 1 ) || ((SEGENV.call % fadeoutDelay) == 0)) SEGMENT.fadeToBlackBy(4+ SEGMENT.speed/4);
|
||||
|
||||
uint8_t numBins = map(SEGMENT.intensity,0,255,0,16); // Map slider to fftResult bins.
|
||||
for (int i=0; i<numBins; i++) { // How many active bins are we using.
|
||||
@@ -6995,13 +6996,16 @@ uint16_t mode_rocktaves(void) { // Rocktaves. Same note from eac
|
||||
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
||||
float my_magnitude = *(float*) um_data->u_data[5] / 16.0f;
|
||||
|
||||
SEGMENT.fadeToBlackBy(64); // Just in case something doesn't get faded.
|
||||
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
|
||||
SEGMENT.fadeToBlackBy(16); // Just in case something doesn't get faded.
|
||||
|
||||
float frTemp = FFT_MajorPeak;
|
||||
uint8_t octCount = 0; // Octave counter.
|
||||
uint8_t volTemp = 0;
|
||||
|
||||
if (my_magnitude > 32) volTemp = 255; // We need to squelch out the background noise.
|
||||
volTemp = 32.0f + my_magnitude * 1.5f; // brightness = volume (overflows are handled in next lines)
|
||||
if (my_magnitude < 48) volTemp = 0; // We need to squelch out the background noise.
|
||||
if (my_magnitude > 144) volTemp = 255; // everything above this is full brightness
|
||||
|
||||
while ( frTemp > 249 ) {
|
||||
octCount++; // This should go up to 5.
|
||||
@@ -7017,7 +7021,7 @@ uint16_t mode_rocktaves(void) { // Rocktaves. Same note from eac
|
||||
|
||||
return FRAMETIME;
|
||||
} // mode_rocktaves()
|
||||
static const char _data_FX_MODE_ROCKTAVES[] PROGMEM = "Rocktaves@;,!;!;mp12=0,ssim=0,1d,fr"; // Pixels, Beatsin
|
||||
static const char _data_FX_MODE_ROCKTAVES[] PROGMEM = "Rocktaves@;,!;!;mp12=1,ssim=0,1d,fr"; // Bar, Beatsin
|
||||
|
||||
|
||||
///////////////////////
|
||||
@@ -7101,10 +7105,13 @@ uint16_t mode_2DGEQ(void) { // By Will Tatam. Code reduction by Ewoud Wijma.
|
||||
rippleTime = true;
|
||||
}
|
||||
|
||||
SEGMENT.fadeToBlackBy(SEGMENT.speed);
|
||||
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
|
||||
int fadeoutDelay = (256 - SEGMENT.speed) / 64;
|
||||
if ((fadeoutDelay <= 1 ) || ((SEGENV.call % fadeoutDelay) == 0)) SEGMENT.fadeToBlackBy(SEGMENT.speed);
|
||||
|
||||
for (int x=0; x < cols; x++) {
|
||||
uint8_t band = map(x, 0, cols-1, 0, NUM_BANDS - 1);
|
||||
if (NUM_BANDS < 16) band = map(band, 0, NUM_BANDS - 1, 0, 15); // always use full range. comment out this line to get the previous behaviour.
|
||||
band = constrain(band, 0, 15);
|
||||
uint16_t colorIndex = band * 17;
|
||||
uint16_t barHeight = map(fftResult[band], 0, 255, 0, rows); // do not subtract -1 from rows here
|
||||
@@ -7186,14 +7193,7 @@ uint16_t mode_2DFunkyPlank(void) { // Written by ??? Adapted by Wil
|
||||
} // mode_2DFunkyPlank
|
||||
static const char _data_FX_MODE_2DFUNKYPLANK[] PROGMEM = "Funky Plank@Scroll speed,,# of bands;;;ssim=0,2d,fr"; // Beatsin
|
||||
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
|
||||
//end audio only routines
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef WLED_DISABLE_2D
|
||||
/////////////////////////
|
||||
// 2D Akemi //
|
||||
/////////////////////////
|
||||
@@ -7298,7 +7298,6 @@ uint16_t mode_2DAkemi(void) {
|
||||
static const char _data_FX_MODE_2DAKEMI[] PROGMEM = "Akemi@Color speed,Dance;Head palette,Arms & Legs,Eyes & Mouth;Face palette;ssim=0,2d,fr"; //beatsin
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
#endif // WLED_DISABLE_AUDIO
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// mode data
|
||||
@@ -7480,16 +7479,14 @@ void WS2812FX::setupEffectData() {
|
||||
addEffect(FX_MODE_2DMETABALLS, &mode_2Dmetaballs, _data_FX_MODE_2DMETABALLS);
|
||||
addEffect(FX_MODE_2DPULSER, &mode_2DPulser, _data_FX_MODE_2DPULSER);
|
||||
addEffect(FX_MODE_2DDRIFT, &mode_2DDrift, _data_FX_MODE_2DDRIFT);
|
||||
|
||||
// --- 2D audio effects ---
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
addEffect(FX_MODE_2DWAVERLY, &mode_2DWaverly, _data_FX_MODE_2DWAVERLY);
|
||||
addEffect(FX_MODE_2DSWIRL, &mode_2DSwirl, _data_FX_MODE_2DSWIRL);
|
||||
addEffect(FX_MODE_2DAKEMI, &mode_2DAkemi, _data_FX_MODE_2DAKEMI);
|
||||
#endif
|
||||
addEffect(FX_MODE_2DGEQ, &mode_2DGEQ, _data_FX_MODE_2DGEQ);
|
||||
addEffect(FX_MODE_2DFUNKYPLANK, &mode_2DFunkyPlank, _data_FX_MODE_2DFUNKYPLANK);
|
||||
#endif // WLED_DISABLE_2D
|
||||
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
// --- 1D audio effects ---
|
||||
addEffect(FX_MODE_PIXELWAVE, &mode_pixelwave, _data_FX_MODE_PIXELWAVE);
|
||||
addEffect(FX_MODE_JUGGLES, &mode_juggles, _data_FX_MODE_JUGGLES);
|
||||
@@ -7504,29 +7501,15 @@ void WS2812FX::setupEffectData() {
|
||||
addEffect(FX_MODE_RIPPLEPEAK, &mode_ripplepeak, _data_FX_MODE_RIPPLEPEAK);
|
||||
addEffect(FX_MODE_GRAVCENTER, &mode_gravcenter, _data_FX_MODE_GRAVCENTER);
|
||||
addEffect(FX_MODE_GRAVCENTRIC, &mode_gravcentric, _data_FX_MODE_GRAVCENTRIC);
|
||||
#endif // WLED_DISABLE_AUDIO
|
||||
|
||||
#ifdef USERMOD_AUDIOREACTIVE
|
||||
// --- WLED-SR audio reactive usermod only effects ---
|
||||
#ifdef WLED_DISABLE_AUDIO
|
||||
#error Incompatible options: WLED_DISABLE_AUDIO and USERMOD_AUDIOREACTIVE
|
||||
#endif
|
||||
#ifdef WLED_DISABLE_2D
|
||||
#error AUDIOREACTIVE usermod requires 2D support.
|
||||
#endif
|
||||
addEffect(FX_MODE_PIXELS, &mode_pixels, _data_FX_MODE_PIXELS);
|
||||
addEffect(FX_MODE_FREQWAVE, &mode_freqwave, _data_FX_MODE_FREQWAVE);
|
||||
addEffect(FX_MODE_FREQMATRIX, &mode_freqmatrix, _data_FX_MODE_FREQMATRIX);
|
||||
addEffect(FX_MODE_2DGEQ, &mode_2DGEQ, _data_FX_MODE_2DGEQ);
|
||||
addEffect(FX_MODE_WATERFALL, &mode_waterfall, _data_FX_MODE_WATERFALL);
|
||||
addEffect(FX_MODE_FREQPIXELS, &mode_freqpixels, _data_FX_MODE_FREQPIXELS);
|
||||
addEffect(FX_MODE_NOISEMOVE, &mode_noisemove, _data_FX_MODE_NOISEMOVE);
|
||||
addEffect(FX_MODE_FREQMAP, &mode_freqmap, _data_FX_MODE_FREQMAP);
|
||||
addEffect(FX_MODE_GRAVFREQ, &mode_gravfreq, _data_FX_MODE_GRAVFREQ);
|
||||
addEffect(FX_MODE_DJLIGHT, &mode_DJLight, _data_FX_MODE_DJLIGHT);
|
||||
addEffect(FX_MODE_2DFUNKYPLANK, &mode_2DFunkyPlank, _data_FX_MODE_2DFUNKYPLANK);
|
||||
addEffect(FX_MODE_BLURZ, &mode_blurz, _data_FX_MODE_BLURZ);
|
||||
addEffect(FX_MODE_ROCKTAVES, &mode_rocktaves, _data_FX_MODE_ROCKTAVES);
|
||||
//addEffect(FX_MODE_CUSTOMEFFECT, &mode_customEffect, _data_FX_MODE_CUSTOMEFFECT); //WLEDSR Custom Effects
|
||||
#endif // USERMOD_AUDIOREACTIVE
|
||||
}
|
||||
|
||||
117
wled00/FX.h
117
wled00/FX.h
@@ -275,67 +275,39 @@
|
||||
#define FX_MODE_2DMETABALLS 142 // non audio
|
||||
#define FX_MODE_2DPULSER 143 // non audio
|
||||
#define FX_MODE_2DDRIFT 144 // non audio
|
||||
#endif
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
#ifndef WLED_DISABLE_2D
|
||||
#define FX_MODE_2DWAVERLY 145 // audio enhanced
|
||||
#define FX_MODE_2DSWIRL 146 // audio enhanced
|
||||
#define FX_MODE_2DAKEMI 147 // audio enhanced
|
||||
// 148 & 149 reserved
|
||||
#endif
|
||||
#define FX_MODE_PIXELWAVE 150 // audio enhanced
|
||||
#define FX_MODE_JUGGLES 151 // audio enhanced
|
||||
#define FX_MODE_MATRIPIX 152 // audio enhanced
|
||||
#define FX_MODE_GRAVIMETER 153 // audio enhanced
|
||||
#define FX_MODE_PLASMOID 154 // audio enhanced
|
||||
#define FX_MODE_PUDDLES 155 // audio enhanced
|
||||
#define FX_MODE_MIDNOISE 156 // audio enhanced
|
||||
#define FX_MODE_NOISEMETER 157 // audio enhanced
|
||||
#define FX_MODE_NOISEFIRE 158 // audio enhanced
|
||||
#define FX_MODE_PUDDLEPEAK 159 // audio enhanced
|
||||
#define FX_MODE_RIPPLEPEAK 160 // audio enhanced
|
||||
#define FX_MODE_GRAVCENTER 161 // audio enhanced
|
||||
#define FX_MODE_GRAVCENTRIC 162 // audio enhanced
|
||||
#endif
|
||||
#define FX_MODE_2DWAVERLY 145 // audio enhanced
|
||||
#define FX_MODE_2DSWIRL 146 // audio enhanced
|
||||
#define FX_MODE_2DAKEMI 147 // audio enhanced
|
||||
#define FX_MODE_2DGEQ 148 // audio enhanced
|
||||
#define FX_MODE_2DFUNKYPLANK 149 // audio enhanced
|
||||
#endif //WLED_DISABLE_2D
|
||||
#define FX_MODE_PIXELWAVE 150 // audio enhanced
|
||||
#define FX_MODE_JUGGLES 151 // audio enhanced
|
||||
#define FX_MODE_MATRIPIX 152 // audio enhanced
|
||||
#define FX_MODE_GRAVIMETER 153 // audio enhanced
|
||||
#define FX_MODE_PLASMOID 154 // audio enhanced
|
||||
#define FX_MODE_PUDDLES 155 // audio enhanced
|
||||
#define FX_MODE_MIDNOISE 156 // audio enhanced
|
||||
#define FX_MODE_NOISEMETER 157 // audio enhanced
|
||||
#define FX_MODE_NOISEFIRE 158 // audio enhanced
|
||||
#define FX_MODE_PUDDLEPEAK 159 // audio enhanced
|
||||
#define FX_MODE_RIPPLEPEAK 160 // audio enhanced
|
||||
#define FX_MODE_GRAVCENTER 161 // audio enhanced
|
||||
#define FX_MODE_GRAVCENTRIC 162 // audio enhanced
|
||||
#define FX_MODE_PIXELS 163 // audio enhanced
|
||||
#define FX_MODE_FREQWAVE 164 // audio enhanced
|
||||
#define FX_MODE_FREQMATRIX 165 // audio enhanced
|
||||
#define FX_MODE_WATERFALL 166 // audio enhanced
|
||||
#define FX_MODE_FREQPIXELS 167 // audio enhanced
|
||||
#define FX_MODE_BINMAP 168 // audio enhanced
|
||||
#define FX_MODE_NOISEMOVE 169 // audio enhanced
|
||||
#define FX_MODE_FREQMAP 170 // audio enhanced
|
||||
#define FX_MODE_GRAVFREQ 171 // audio enhanced
|
||||
#define FX_MODE_DJLIGHT 172 // audio enhanced
|
||||
#define FX_MODE_BLURZ 173 // audio enhanced
|
||||
#define FX_MODE_ROCKTAVES 174 // audio enhanced
|
||||
|
||||
#ifndef USERMOD_AUDIOREACTIVE
|
||||
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
#define MODE_COUNT 163
|
||||
#else
|
||||
#ifndef WLED_DISABLE_2D
|
||||
#define MODE_COUNT 145
|
||||
#else
|
||||
#define MODE_COUNT 118
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#ifdef WLED_DISABLE_AUDIO
|
||||
#error Incompatible options: WLED_DISABLE_AUDIO and USERMOD_AUDIOREACTIVE
|
||||
#endif
|
||||
#ifdef WLED_DISABLE_2D
|
||||
#error AUDIOREACTIVE usermod requires 2D support.
|
||||
#endif
|
||||
#define FX_MODE_2DGEQ 148
|
||||
#define FX_MODE_2DFUNKYPLANK 149
|
||||
#define FX_MODE_PIXELS 163
|
||||
#define FX_MODE_FREQWAVE 164
|
||||
#define FX_MODE_FREQMATRIX 165
|
||||
#define FX_MODE_WATERFALL 166
|
||||
#define FX_MODE_FREQPIXELS 167
|
||||
#define FX_MODE_BINMAP 168
|
||||
#define FX_MODE_NOISEMOVE 169
|
||||
#define FX_MODE_FREQMAP 170
|
||||
#define FX_MODE_GRAVFREQ 171
|
||||
#define FX_MODE_DJLIGHT 172
|
||||
#define FX_MODE_BLURZ 173
|
||||
#define FX_MODE_ROCKTAVES 174
|
||||
//#define FX_MODE_CUSTOMEFFECT 175 //WLEDSR Custom Effects
|
||||
|
||||
#define MODE_COUNT 175
|
||||
#endif
|
||||
#define MODE_COUNT 175
|
||||
|
||||
typedef enum mapping1D2D {
|
||||
M12_Pixels = 0,
|
||||
@@ -416,14 +388,31 @@ typedef struct Segment {
|
||||
uint8_t _briT; // temporary brightness
|
||||
uint8_t _cctT; // temporary CCT
|
||||
CRGBPalette16 _palT; // temporary palette
|
||||
uint8_t _prevPaletteBlends; // number of previous palette blends (there are max 128 belnds possible)
|
||||
uint8_t _modeP; // previous mode/effect
|
||||
//uint16_t _aux0, _aux1; // previous mode/effect runtime data
|
||||
//uint32_t _step, _call; // previous mode/effect runtime data
|
||||
//byte *_data; // previous mode/effect runtime data
|
||||
uint32_t _start;
|
||||
uint16_t _dur;
|
||||
Transition(uint16_t dur=750) : _briT(255), _cctT(127), _palT(CRGBPalette16(CRGB::Black)), _modeP(FX_MODE_STATIC), _start(millis()), _dur(dur) {}
|
||||
Transition(uint16_t d, uint8_t b, uint8_t c, const uint32_t *o) : _briT(b), _cctT(c), _palT(CRGBPalette16(CRGB::Black)), _modeP(FX_MODE_STATIC), _start(millis()), _dur(d) {
|
||||
Transition(uint16_t dur=750)
|
||||
: _briT(255)
|
||||
, _cctT(127)
|
||||
, _palT(CRGBPalette16(CRGB::Black))
|
||||
, _prevPaletteBlends(0)
|
||||
, _modeP(FX_MODE_STATIC)
|
||||
, _start(millis())
|
||||
, _dur(dur)
|
||||
{}
|
||||
Transition(uint16_t d, uint8_t b, uint8_t c, const uint32_t *o)
|
||||
: _briT(b)
|
||||
, _cctT(c)
|
||||
, _palT(CRGBPalette16(CRGB::Black))
|
||||
, _prevPaletteBlends(0)
|
||||
, _modeP(FX_MODE_STATIC)
|
||||
, _start(millis())
|
||||
, _dur(d)
|
||||
{
|
||||
for (size_t i=0; i<NUM_COLORS; i++) _colorT[i] = o[i];
|
||||
}
|
||||
} *_t;
|
||||
@@ -647,8 +636,6 @@ class WS2812FX { // 96 bytes
|
||||
public:
|
||||
|
||||
WS2812FX() :
|
||||
gammaCorrectBri(false),
|
||||
gammaCorrectCol(true),
|
||||
paletteFade(0),
|
||||
paletteBlend(0),
|
||||
milliampsPerLed(55),
|
||||
@@ -747,8 +734,6 @@ class WS2812FX { // 96 bytes
|
||||
inline void appendSegment(const Segment &seg = Segment()) { _segments.push_back(seg); }
|
||||
|
||||
bool
|
||||
gammaCorrectBri,
|
||||
gammaCorrectCol,
|
||||
checkSegmentAlignment(void),
|
||||
hasRGBWBus(void),
|
||||
hasCCTBus(void),
|
||||
|
||||
@@ -459,14 +459,17 @@ void Segment::drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint3
|
||||
}
|
||||
}
|
||||
|
||||
#include "console_font_5x8.h"
|
||||
#include "console_font_5x12.h"
|
||||
#include "console_font_6x8.h"
|
||||
#include "console_font_7x9.h"
|
||||
#include "src/font/console_font_4x6.h"
|
||||
#include "src/font/console_font_5x8.h"
|
||||
#include "src/font/console_font_5x12.h"
|
||||
#include "src/font/console_font_6x8.h"
|
||||
#include "src/font/console_font_7x9.h"
|
||||
|
||||
// draws a raster font character on canvas
|
||||
// only supports 5x8=40, 5x12=60, 6x8=48 and 7x9=63 fonts ATM
|
||||
void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color) {
|
||||
if (chr < 32 || chr > 126) return; // only ASCII 32-126 supported
|
||||
chr -= 32; // align with font table entries
|
||||
const uint16_t cols = virtualWidth();
|
||||
const uint16_t rows = virtualHeight();
|
||||
const int font = w*h;
|
||||
@@ -478,6 +481,7 @@ void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w,
|
||||
if (y0 >= rows) break; // drawing off-screen
|
||||
uint8_t bits = 0;
|
||||
switch (font) {
|
||||
case 24: bits = pgm_read_byte_near(&console_font_4x6[(chr * h) + i]); break; // 5x8 font
|
||||
case 40: bits = pgm_read_byte_near(&console_font_5x8[(chr * h) + i]); break; // 5x8 font
|
||||
case 48: bits = pgm_read_byte_near(&console_font_6x8[(chr * h) + i]); break; // 6x8 font
|
||||
case 63: bits = pgm_read_byte_near(&console_font_7x9[(chr * h) + i]); break; // 7x9 font
|
||||
|
||||
@@ -208,6 +208,7 @@ void Segment::setUpLeds() {
|
||||
|
||||
CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) {
|
||||
static unsigned long _lastPaletteChange = 0; // perhaps it should be per segment
|
||||
static CRGBPalette16 randomPalette = CRGBPalette16(DEFAULT_COLOR);
|
||||
byte tcp[72];
|
||||
if (pal < 245 && pal > GRADIENT_PALETTE_COUNT+13) pal = 0;
|
||||
if (pal > 245 && (strip.customPalettes.size() == 0 || 255U-pal > strip.customPalettes.size()-1)) pal = 0;
|
||||
@@ -229,30 +230,31 @@ CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) {
|
||||
targetPalette = PartyColors_p; break;
|
||||
case 1: //periodically replace palette with a random one. Doesn't work with multiple FastLED segments
|
||||
if (millis() - _lastPaletteChange > 5000 /*+ ((uint32_t)(255-intensity))*100*/) {
|
||||
targetPalette = CRGBPalette16(
|
||||
CHSV(random8(), 255, random8(128, 255)),
|
||||
CHSV(random8(), 255, random8(128, 255)),
|
||||
CHSV(random8(), 192, random8(128, 255)),
|
||||
CHSV(random8(), 255, random8(128, 255)));
|
||||
randomPalette = CRGBPalette16(
|
||||
CHSV(random8(), random8(160, 255), random8(128, 255)),
|
||||
CHSV(random8(), random8(160, 255), random8(128, 255)),
|
||||
CHSV(random8(), random8(160, 255), random8(128, 255)),
|
||||
CHSV(random8(), random8(160, 255), random8(128, 255)));
|
||||
_lastPaletteChange = millis();
|
||||
} break;
|
||||
}
|
||||
targetPalette = randomPalette; break;
|
||||
case 2: {//primary color only
|
||||
CRGB prim = strip.gammaCorrectCol ? gamma32(colors[0]) : colors[0];
|
||||
CRGB prim = gamma32(colors[0]);
|
||||
targetPalette = CRGBPalette16(prim); break;}
|
||||
case 3: {//primary + secondary
|
||||
CRGB prim = strip.gammaCorrectCol ? gamma32(colors[0]) : colors[0];
|
||||
CRGB sec = strip.gammaCorrectCol ? gamma32(colors[1]) : colors[1];
|
||||
CRGB prim = gamma32(colors[0]);
|
||||
CRGB sec = gamma32(colors[1]);
|
||||
targetPalette = CRGBPalette16(prim,prim,sec,sec); break;}
|
||||
case 4: {//primary + secondary + tertiary
|
||||
CRGB prim = strip.gammaCorrectCol ? gamma32(colors[0]) : colors[0];
|
||||
CRGB sec = strip.gammaCorrectCol ? gamma32(colors[1]) : colors[1];
|
||||
CRGB ter = strip.gammaCorrectCol ? gamma32(colors[2]) : colors[2];
|
||||
CRGB prim = gamma32(colors[0]);
|
||||
CRGB sec = gamma32(colors[1]);
|
||||
CRGB ter = gamma32(colors[2]);
|
||||
targetPalette = CRGBPalette16(ter,sec,prim); break;}
|
||||
case 5: {//primary + secondary (+tert if not off), more distinct
|
||||
CRGB prim = strip.gammaCorrectCol ? gamma32(colors[0]) : colors[0];
|
||||
CRGB sec = strip.gammaCorrectCol ? gamma32(colors[1]) : colors[1];
|
||||
CRGB prim = gamma32(colors[0]);
|
||||
CRGB sec = gamma32(colors[1]);
|
||||
if (colors[2]) {
|
||||
CRGB ter = strip.gammaCorrectCol ? gamma32(colors[2]) : colors[2];
|
||||
CRGB ter = gamma32(colors[2]);
|
||||
targetPalette = CRGBPalette16(prim,prim,prim,prim,prim,sec,sec,sec,sec,sec,ter,ter,ter,ter,ter,prim);
|
||||
} else {
|
||||
targetPalette = CRGBPalette16(prim,prim,prim,prim,prim,prim,prim,prim,sec,sec,sec,sec,sec,sec,sec,sec);
|
||||
@@ -339,8 +341,11 @@ CRGBPalette16 &Segment::currentPalette(CRGBPalette16 &targetPalette, uint8_t pal
|
||||
loadPalette(targetPalette, pal);
|
||||
if (transitional && _t && progress() < 0xFFFFU) {
|
||||
// blend palettes
|
||||
uint8_t blends = map(_t->_dur, 0, 0xFFFF, 48, 6); // do not blend palettes too quickly (0-65.5s)
|
||||
nblendPaletteTowardPalette(_t->_palT, targetPalette, blends);
|
||||
// there are about 255 blend passes of 48 "blends" to completely blend two palettes (in _dur time)
|
||||
// minimum blend time is 100ms maximum is 65535ms
|
||||
uint32_t timeMS = millis() - _t->_start;
|
||||
uint16_t noOfBlends = (255U * timeMS / _t->_dur) - _t->_prevPaletteBlends;
|
||||
for (int i=0; i<noOfBlends; i++, _t->_prevPaletteBlends++) nblendPaletteTowardPalette(_t->_palT, targetPalette, 48);
|
||||
targetPalette = _t->_palT; // copy transitioning/temporary palette
|
||||
}
|
||||
return targetPalette;
|
||||
@@ -823,7 +828,7 @@ uint32_t Segment::color_from_palette(uint16_t i, bool mapping, bool wrap, uint8_
|
||||
// default palette or no RGB support on segment
|
||||
if ((palette == 0 && mcol < NUM_COLORS) || !(_capabilities & 0x01)) {
|
||||
uint32_t color = (transitional && _t) ? _t->_colorT[mcol] : colors[mcol];
|
||||
color = strip.gammaCorrectCol ? gamma32(color) : color;
|
||||
color = gamma32(color);
|
||||
if (pbri == 255) return color;
|
||||
return RGBW32(scale8_video(R(color),pbri), scale8_video(G(color),pbri), scale8_video(B(color),pbri), scale8_video(W(color),pbri));
|
||||
}
|
||||
|
||||
@@ -170,6 +170,7 @@ class Bus {
|
||||
static bool isRgbw(uint8_t type) {
|
||||
if (type == TYPE_SK6812_RGBW || type == TYPE_TM1814) return true;
|
||||
if (type > TYPE_ONOFF && type <= TYPE_ANALOG_5CH && type != TYPE_ANALOG_3CH) return true;
|
||||
if (type == TYPE_NET_DDP_RGBW) return true;
|
||||
return false;
|
||||
}
|
||||
virtual bool hasRGB() {
|
||||
@@ -178,7 +179,7 @@ class Bus {
|
||||
}
|
||||
virtual bool hasWhite() {
|
||||
if (_type == TYPE_SK6812_RGBW || _type == TYPE_TM1814 || _type == TYPE_WS2812_1CH || _type == TYPE_WS2812_WWA ||
|
||||
_type == TYPE_ANALOG_1CH || _type == TYPE_ANALOG_2CH || _type == TYPE_ANALOG_4CH || _type == TYPE_ANALOG_5CH) return true;
|
||||
_type == TYPE_ANALOG_1CH || _type == TYPE_ANALOG_2CH || _type == TYPE_ANALOG_4CH || _type == TYPE_ANALOG_5CH || _type == TYPE_NET_DDP_RGBW) return true;
|
||||
return false;
|
||||
}
|
||||
static void setCCT(uint16_t cct) {
|
||||
@@ -573,9 +574,9 @@ class BusNetwork : public Bus {
|
||||
// _rgbw = false;
|
||||
// _UDPtype = 0;
|
||||
// break;
|
||||
// default:
|
||||
_rgbw = false;
|
||||
_UDPtype = bc.type - TYPE_NET_DDP_RGB;
|
||||
// default: // TYPE_NET_DDP_RGB / TYPE_NET_DDP_RGBW
|
||||
_rgbw = bc.type == TYPE_NET_DDP_RGBW;
|
||||
_UDPtype = 0;
|
||||
// break;
|
||||
// }
|
||||
_UDPchannels = _rgbw ? 4 : 3;
|
||||
|
||||
@@ -302,10 +302,10 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
||||
|
||||
float light_gc_bri = light["gc"]["bri"];
|
||||
float light_gc_col = light["gc"]["col"]; // 2.8
|
||||
if (light_gc_bri > 1.5) strip.gammaCorrectBri = true;
|
||||
else if (light_gc_bri > 0.5) strip.gammaCorrectBri = false;
|
||||
if (light_gc_col > 1.5) strip.gammaCorrectCol = true;
|
||||
else if (light_gc_col > 0.5) strip.gammaCorrectCol = false;
|
||||
if (light_gc_bri > 1.5) gammaCorrectBri = true;
|
||||
else if (light_gc_bri > 0.5) gammaCorrectBri = false;
|
||||
if (light_gc_col > 1.5) gammaCorrectCol = true;
|
||||
else if (light_gc_col > 0.5) gammaCorrectCol = false;
|
||||
|
||||
JsonObject light_tr = light["tr"];
|
||||
CJSON(fadeTransition, light_tr["mode"]);
|
||||
@@ -759,8 +759,8 @@ void serializeConfig() {
|
||||
light[F("aseg")] = autoSegments;
|
||||
|
||||
JsonObject light_gc = light.createNestedObject("gc");
|
||||
light_gc["bri"] = (strip.gammaCorrectBri) ? 2.8 : 1.0;
|
||||
light_gc["col"] = (strip.gammaCorrectCol) ? 2.8 : 1.0;
|
||||
light_gc["bri"] = (gammaCorrectBri) ? 2.8 : 1.0;
|
||||
light_gc["col"] = (gammaCorrectCol) ? 2.8 : 1.0;
|
||||
|
||||
JsonObject light_tr = light.createNestedObject("tr");
|
||||
light_tr["mode"] = fadeTransition;
|
||||
|
||||
@@ -358,7 +358,7 @@ uint8_t gamma8(uint8_t b)
|
||||
|
||||
uint32_t gamma32(uint32_t color)
|
||||
{
|
||||
//if (!strip.gammaCorrectCol) return color;
|
||||
if (!gammaCorrectCol) return color;
|
||||
uint8_t w = W(color);
|
||||
uint8_t r = R(color);
|
||||
uint8_t g = G(color);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -172,8 +172,9 @@
|
||||
#define TYPE_LPD6803 54
|
||||
//Network types (master broadcast) (80-95)
|
||||
#define TYPE_NET_DDP_RGB 80 //network DDP RGB bus (master broadcast bus)
|
||||
#define TYPE_NET_E131_RGB 81 //network E131 RGB bus (master broadcast bus)
|
||||
#define TYPE_NET_ARTNET_RGB 82 //network ArtNet RGB bus (master broadcast bus)
|
||||
#define TYPE_NET_E131_RGB 81 //network E131 RGB bus (master broadcast bus, unused)
|
||||
#define TYPE_NET_ARTNET_RGB 82 //network ArtNet RGB bus (master broadcast bus, unused)
|
||||
#define TYPE_NET_DDP_RGBW 88 //network DDP RGBW bus (master broadcast bus)
|
||||
|
||||
#define IS_DIGITAL(t) ((t) & 0x10) //digital are 16-31 and 48-63
|
||||
#define IS_PWM(t) ((t) > 40 && (t) < 46)
|
||||
|
||||
@@ -101,7 +101,7 @@ button {
|
||||
position: fixed;
|
||||
bottom: calc(var(--bh) + 6px);
|
||||
right: 6px;
|
||||
color: var(--c-d);
|
||||
color: var(--c-d); /* must remain bright with dark shadow (see below) to be legible on gray background */
|
||||
cursor: pointer;
|
||||
writing-mode: vertical-rl;
|
||||
transform: rotate(180deg);
|
||||
@@ -1045,7 +1045,7 @@ textarea {
|
||||
/*box-shadow: 0 0 0 5px var(--c-d);*/
|
||||
}
|
||||
|
||||
.qcs, #namelabel {
|
||||
.qcs, #namelabel { /* text shadow for name to be legible on grey backround */
|
||||
text-shadow: -1px -1px 0 var(--c-4), 1px -1px 0 var(--c-4), -1px 1px 0 var(--c-4), 1px 1px 0 var(--c-4);
|
||||
}
|
||||
|
||||
|
||||
@@ -611,13 +611,13 @@ function parseInfo(i) {
|
||||
//gId("filter2D").classList.add("hide");
|
||||
hideModes("2D");
|
||||
}
|
||||
if (i.noaudio) {
|
||||
gId("filterVol").classList.add("hide");
|
||||
gId("filterFreq").classList.add("hide");
|
||||
}
|
||||
// if (i.noaudio) {
|
||||
// gId("filterVol").classList.add("hide");
|
||||
// gId("filterFreq").classList.add("hide");
|
||||
// }
|
||||
// if (!i.u || !i.u.AudioReactive) {
|
||||
//gId("filterVol").classList.add("hide"); hideModes(" ♪"); // hide volume reactive effects
|
||||
//gId("filterFreq").classList.add("hide"); hideModes(" ♫"); // hide frequency reactive effects
|
||||
// gId("filterVol").classList.add("hide"); hideModes(" ♪"); // hide volume reactive effects
|
||||
// gId("filterFreq").classList.add("hide"); hideModes(" ♫"); // hide frequency reactive effects
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -659,6 +659,7 @@ function populateInfo(i)
|
||||
|
||||
cn += `v${i.ver} "${vcn}"<br><br><table>
|
||||
${urows}
|
||||
${urows===""?'':'<tr><td colspan=2><hr style="height:1px;border-width:0;color:gray;background-color:gray"></td></tr>'}
|
||||
${inforow("Build",i.vid)}
|
||||
${inforow("Signal strength",i.wifi.signal +"% ("+ i.wifi.rssi, " dBm)")}
|
||||
${inforow("Uptime",getRuntimeStr(i.uptime))}
|
||||
@@ -1042,7 +1043,7 @@ function updateLen(s)
|
||||
let tPL = gId(`seg${s}lbtm`);
|
||||
if (stop-start>1 && stopY-startY>1) {
|
||||
// 2D segment
|
||||
tPL.classList.remove("hide"); // unhide transpose checkbox
|
||||
if (tPL) tPL.classList.remove("hide"); // unhide transpose checkbox
|
||||
let sE = gId('fxlist').querySelector(`.lstI[data-id="${selectedFx}"]`);
|
||||
if (sE) {
|
||||
let sN = sE.querySelector(".lstIname").innerText;
|
||||
@@ -1054,8 +1055,10 @@ function updateLen(s)
|
||||
}
|
||||
} else {
|
||||
// 1D segment in 2D set-up
|
||||
tPL.classList.add("hide"); // hide transpose checkbox
|
||||
gId(`seg${s}tp`).checked = false; // and uncheck it
|
||||
if (tPL) {
|
||||
tPL.classList.add("hide"); // hide transpose checkbox
|
||||
gId(`seg${s}tp`).checked = false; // and uncheck it
|
||||
}
|
||||
}
|
||||
}
|
||||
var out = "(delete)";
|
||||
@@ -1995,15 +1998,15 @@ function setSeg(s)
|
||||
var stopY = parseInt(gId(`seg${s}eY`).value);
|
||||
obj.seg.startY = startY;
|
||||
obj.seg.stopY = (cfg.comp.seglen?startY:0)+stopY;
|
||||
obj.seg.tp = gId(`seg${s}tp`).checked;
|
||||
}
|
||||
if (gId(`seg${s}grp`)) {
|
||||
if (gId(`seg${s}grp`)) { // advanced options, not present in new segment dialog (makeSeg())
|
||||
var grp = parseInt(gId(`seg${s}grp`).value);
|
||||
var spc = parseInt(gId(`seg${s}spc`).value);
|
||||
var ofs = parseInt(gId(`seg${s}of` ).value);
|
||||
obj.seg.grp = grp;
|
||||
obj.seg.spc = spc;
|
||||
obj.seg.of = ofs;
|
||||
if (isM) obj.seg.tp = gId(`seg${s}tp`).checked;
|
||||
}
|
||||
requestJson(obj);
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
if (t > 31 && t < 48) d.getElementsByName("LC"+n)[0].value = 1; // for sanity change analog count just to 1 LED
|
||||
}
|
||||
gId("rf"+n).onclick = (t == 31) ? (()=>{return false}) : (()=>{}); // prevent change for TM1814
|
||||
isRGBW |= (t == 30 || t == 31 || (t > 40 && t < 46 && t != 43)); // RGBW checkbox, TYPE_xxxx values from const.h
|
||||
isRGBW = (t == 30 || t == 31 || (t > 40 && t < 46 && t != 43) || t == 88); // RGBW checkbox, TYPE_xxxx values from const.h
|
||||
gId("co"+n).style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none":"inline"; // hide color order for PWM
|
||||
gId("dig"+n+"w").style.display = (t == 30 || t == 31) ? "inline":"none"; // show swap channels dropdown
|
||||
if (!(t == 30 || t == 31)) d.getElementsByName("WO"+n)[0].value = 0; // reset swapping
|
||||
@@ -332,6 +332,7 @@ ${i+1}:
|
||||
<option value="80">DDP RGB (network)</option>
|
||||
<!--option value="81">E1.31 RGB (network)</option-->
|
||||
<!--option value="82">ArtNet RGB (network)</option-->
|
||||
<option value="88">DDP RGBW (network)</option>
|
||||
</select><br>
|
||||
<div id="co${i}" style="display:inline">Color Order:
|
||||
<select name="CO${i}">
|
||||
|
||||
@@ -25,9 +25,11 @@ void handleDDPPacket(e131_packet_t* p) {
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t start = htonl(p->channelOffset) /3;
|
||||
start += DMXAddress /3;
|
||||
uint16_t stop = start + htons(p->dataLen) /3;
|
||||
uint8_t ddpChannelsPerLed = (p->dataType == DDP_TYPE_RGBW32) ? 4 : 3; // data type 0x1A is RGBW (type 3, 8 bit/channel)
|
||||
|
||||
uint32_t start = htonl(p->channelOffset) / ddpChannelsPerLed;
|
||||
start += DMXAddress / ddpChannelsPerLed;
|
||||
uint16_t stop = start + htons(p->dataLen) / ddpChannelsPerLed;
|
||||
uint8_t* data = p->data;
|
||||
uint16_t c = 0;
|
||||
if (p->flags & DDP_TIMECODE_FLAG) c = 4; //packet has timecode flag, we do not support it, but data starts 4 bytes later
|
||||
@@ -36,8 +38,8 @@ void handleDDPPacket(e131_packet_t* p) {
|
||||
|
||||
if (!realtimeOverride || (realtimeMode && useMainSegmentOnly)) {
|
||||
for (uint16_t i = start; i < stop; i++) {
|
||||
setRealtimePixel(i, data[c], data[c+1], data[c+2], 0);
|
||||
c+=3;
|
||||
setRealtimePixel(i, data[c], data[c+1], data[c+2], ddpChannelsPerLed >3 ? data[c+3] : 0);
|
||||
c += ddpChannelsPerLed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@ const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
||||
|
||||
|
||||
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
|
||||
const uint16_t PAGE_settings_leds_length = 7357;
|
||||
const uint16_t PAGE_settings_leds_length = 7368;
|
||||
const uint8_t PAGE_settings_leds[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x3c, 0xed, 0x76, 0xe2, 0xc6,
|
||||
0x92, 0xff, 0x79, 0x8a, 0x76, 0x27, 0x71, 0xa4, 0x8b, 0x0c, 0x12, 0x1f, 0x8e, 0x07, 0x10, 0xac,
|
||||
@@ -359,345 +359,346 @@ const uint8_t PAGE_settings_leds[] PROGMEM = {
|
||||
0x43, 0x32, 0x20, 0x3c, 0x6b, 0x38, 0xe5, 0xb2, 0x4a, 0xdc, 0x61, 0xc9, 0xb3, 0x97, 0x97, 0x26,
|
||||
0xb0, 0xe8, 0x6a, 0x2e, 0xb7, 0x0a, 0x17, 0xac, 0x02, 0xc6, 0xee, 0xb4, 0xf5, 0x5c, 0x4a, 0x62,
|
||||
0x42, 0x92, 0xa3, 0xe5, 0x11, 0xfa, 0x9e, 0x0d, 0x49, 0xc5, 0x83, 0xc9, 0xf1, 0x0d, 0xb0, 0x78,
|
||||
0x3c, 0x30, 0x3a, 0xbc, 0x86, 0x5c, 0x6b, 0xde, 0x0b, 0x38, 0x58, 0x78, 0x2c, 0xa9, 0x71, 0x81,
|
||||
0x70, 0x69, 0xb5, 0x40, 0x5a, 0xad, 0xe6, 0x01, 0x30, 0xc0, 0x51, 0xd9, 0x3e, 0x47, 0x55, 0x9c,
|
||||
0x6f, 0x4e, 0xb4, 0x38, 0xd0, 0x94, 0x23, 0x4f, 0x06, 0x42, 0x10, 0x9d, 0x54, 0x70, 0x1c, 0xc5,
|
||||
0xc4, 0x99, 0x01, 0x8e, 0x2a, 0x7d, 0xda, 0xb2, 0xcb, 0x3c, 0x07, 0x5b, 0x16, 0xd9, 0xd4, 0x81,
|
||||
0x09, 0xf0, 0x3b, 0x06, 0xff, 0x53, 0x2e, 0x81, 0x8f, 0x37, 0x45, 0x09, 0xe8, 0x6a, 0x91, 0xa4,
|
||||
0x4d, 0x4b, 0x58, 0x7f, 0x1b, 0xb7, 0x21, 0xdd, 0x33, 0xeb, 0xfd, 0x43, 0x23, 0xfa, 0xbf, 0x23,
|
||||
0xb0, 0x69, 0x19, 0x1e, 0xe3, 0x18, 0x87, 0x36, 0x1b, 0x1c, 0x4f, 0x5b, 0x4f, 0xcc, 0xac, 0x2c,
|
||||
0x23, 0x49, 0xf0, 0x58, 0x5b, 0x78, 0xa0, 0x10, 0x68, 0xa1, 0x78, 0xcb, 0xc7, 0x81, 0x67, 0xdb,
|
||||
0xf6, 0x14, 0x19, 0xcb, 0x97, 0xde, 0x23, 0xa4, 0x62, 0x6c, 0x42, 0xa0, 0x8c, 0xc6, 0xea, 0xb4,
|
||||
0x43, 0xef, 0x20, 0x6f, 0x04, 0xcf, 0x33, 0x21, 0x4a, 0xe8, 0xc7, 0x16, 0xbe, 0x32, 0x4e, 0xf4,
|
||||
0xff, 0xfe, 0x2f, 0x35, 0xcd, 0x8c, 0x26, 0xfb, 0xf1, 0x4d, 0xd8, 0x37, 0x74, 0x0f, 0xbc, 0x5d,
|
||||
0xd5, 0xa1, 0x6b, 0x74, 0x12, 0x21, 0x98, 0xf8, 0x3f, 0x96, 0x0c, 0xc2, 0x22, 0xf7, 0x9a, 0x7e,
|
||||
0x78, 0xea, 0xba, 0x0a, 0xad, 0x3d, 0xc1, 0x8a, 0x6a, 0x4b, 0x33, 0x4c, 0xfc, 0x66, 0xe6, 0x4a,
|
||||
0x97, 0xdc, 0x87, 0x86, 0xe8, 0xf8, 0x36, 0xe6, 0xba, 0x39, 0x49, 0xee, 0x84, 0x82, 0xd7, 0x4a,
|
||||
0x6e, 0x6d, 0x61, 0xea, 0xda, 0x23, 0xb6, 0xd2, 0x00, 0x7d, 0x46, 0x26, 0xd8, 0x2a, 0xbf, 0x67,
|
||||
0x66, 0xb0, 0xab, 0xfc, 0xf6, 0x4b, 0x5f, 0x25, 0x05, 0xcf, 0x19, 0x54, 0x0b, 0x33, 0x59, 0xb1,
|
||||
0x60, 0xf1, 0x33, 0x4b, 0x8a, 0x9f, 0x99, 0xfa, 0x8a, 0xb9, 0x43, 0x50, 0x35, 0x79, 0x63, 0xa1,
|
||||
0x5b, 0x32, 0x38, 0xa9, 0x9c, 0x66, 0x49, 0xe5, 0x24, 0x68, 0x28, 0xae, 0xf9, 0xa7, 0x0a, 0x1c,
|
||||
0x55, 0x94, 0x37, 0xcf, 0x7c, 0x06, 0x48, 0x10, 0x22, 0xa4, 0x26, 0xbe, 0x38, 0x1e, 0x88, 0x25,
|
||||
0xc8, 0x24, 0x6d, 0xfb, 0xae, 0x1f, 0x9a, 0xf4, 0xbb, 0xe9, 0x74, 0x4a, 0xbb, 0x69, 0x3d, 0x94,
|
||||
0x0e, 0x6c, 0x36, 0xb3, 0x71, 0x47, 0x46, 0xae, 0x1b, 0xb0, 0x8f, 0xe7, 0xa4, 0xda, 0x9b, 0x25,
|
||||
0xd5, 0xde, 0x2c, 0xa9, 0xf6, 0x66, 0x49, 0xb5, 0x37, 0x93, 0xdd, 0x80, 0x60, 0xab, 0x1b, 0x10,
|
||||
0xe4, 0xba, 0x01, 0xb8, 0x44, 0xd8, 0xf3, 0xec, 0xe6, 0xda, 0x02, 0xa7, 0x61, 0x68, 0xad, 0x6a,
|
||||
0x4e, 0xc4, 0xff, 0x26, 0xe5, 0xbc, 0x8a, 0x8b, 0xfc, 0x00, 0x8b, 0xfc, 0xd0, 0x93, 0x6d, 0x03,
|
||||
0xb9, 0xd2, 0x0f, 0xb0, 0xd2, 0xab, 0x5a, 0xb0, 0x8c, 0xe6, 0x12, 0xf4, 0xd3, 0xc3, 0x67, 0x55,
|
||||
0x16, 0xbb, 0x3a, 0x94, 0xba, 0x41, 0xbe, 0xd4, 0x05, 0x2a, 0xce, 0x81, 0xf9, 0x55, 0xd0, 0x9d,
|
||||
0x02, 0x27, 0xaf, 0x95, 0xbc, 0xd3, 0x44, 0x08, 0xd3, 0x44, 0x08, 0xd3, 0x44, 0x08, 0xd3, 0x44,
|
||||
0x08, 0xd3, 0x44, 0x08, 0xd3, 0x44, 0x08, 0xd3, 0x44, 0x08, 0xd3, 0x5c, 0xc9, 0x3b, 0x2d, 0x2d,
|
||||
0x79, 0xaf, 0x4a, 0x99, 0x78, 0x6b, 0xc9, 0x7b, 0xb5, 0xaf, 0xe4, 0x15, 0xd2, 0xff, 0xba, 0x25,
|
||||
0xfd, 0xec, 0x89, 0x94, 0x5b, 0x4a, 0x27, 0x7b, 0xc7, 0xbb, 0x2e, 0xeb, 0xf5, 0x4a, 0x34, 0x67,
|
||||
0x98, 0xd9, 0x67, 0xb9, 0xe6, 0x4c, 0x50, 0x6c, 0xce, 0x0c, 0xb6, 0x95, 0x0d, 0x82, 0x2c, 0xed,
|
||||
0x6c, 0x3d, 0xde, 0x81, 0xa0, 0xdf, 0x6c, 0x0e, 0xa8, 0x1f, 0x5a, 0xde, 0x0c, 0x9d, 0x00, 0xd7,
|
||||
0xd3, 0xf5, 0x9a, 0xb9, 0x11, 0xe3, 0x02, 0xba, 0xdc, 0x35, 0xac, 0x9b, 0xef, 0xa2, 0x43, 0xa1,
|
||||
0x96, 0xf5, 0xd0, 0x3f, 0xf9, 0x9f, 0x5f, 0x5e, 0x44, 0x40, 0x77, 0x23, 0xee, 0xdb, 0x44, 0xfc,
|
||||
0x59, 0xc8, 0xf8, 0x23, 0x1f, 0x82, 0x0b, 0xc2, 0xf2, 0x07, 0xd2, 0x81, 0x3c, 0x26, 0xed, 0x12,
|
||||
0xc2, 0x99, 0x62, 0x65, 0x54, 0xb7, 0xf0, 0xa8, 0x6a, 0xf5, 0xb2, 0xbf, 0x00, 0xa8, 0x85, 0x69,
|
||||
0x55, 0x2f, 0x55, 0xed, 0xb2, 0x6f, 0xc3, 0x17, 0xdb, 0x84, 0x8f, 0x7f, 0xde, 0x8c, 0x7b, 0x18,
|
||||
0x79, 0x94, 0xc7, 0x2a, 0x8c, 0x06, 0x79, 0x0b, 0x5a, 0x18, 0x17, 0xb1, 0x51, 0x7d, 0x26, 0x77,
|
||||
0x40, 0x16, 0xd2, 0x51, 0x6f, 0x3d, 0x37, 0xcd, 0xc7, 0x01, 0x05, 0x99, 0x29, 0xb4, 0xfa, 0x58,
|
||||
0xa5, 0x24, 0x98, 0xaf, 0x22, 0xc7, 0xb6, 0xdc, 0xc4, 0xb3, 0x2f, 0xf4, 0x42, 0x05, 0x14, 0x6b,
|
||||
0x62, 0xff, 0x21, 0xae, 0x63, 0xda, 0xff, 0x17, 0x43, 0x97, 0x55, 0xf4, 0x64, 0x6c, 0x65, 0xe1,
|
||||
0x74, 0x6c, 0xd9, 0x0f, 0xb3, 0xd0, 0x5f, 0x7a, 0x13, 0xf3, 0x0b, 0xba, 0x65, 0x2b, 0x3c, 0x9a,
|
||||
0x85, 0xd6, 0xc4, 0xc1, 0xae, 0xfb, 0x3b, 0x7d, 0xc2, 0x66, 0x1a, 0xf9, 0xfe, 0x59, 0xb4, 0x13,
|
||||
0x8e, 0xf5, 0x81, 0xf8, 0xf0, 0x0e, 0x12, 0x76, 0xbe, 0xe2, 0xb9, 0x55, 0xb4, 0x6d, 0x9b, 0xae,
|
||||
0x89, 0x9e, 0x00, 0xaf, 0x7f, 0xd0, 0xc8, 0x77, 0xad, 0x56, 0x2b, 0xfb, 0x4e, 0x80, 0xfe, 0x0f,
|
||||
0xea, 0x17, 0xb9, 0x22, 0x6c, 0xb2, 0xab, 0x3a, 0xb0, 0xfb, 0xd7, 0x56, 0x3c, 0x47, 0xf7, 0xa4,
|
||||
0x70, 0xa7, 0xaa, 0x9d, 0xe8, 0xba, 0xfa, 0xf2, 0x22, 0x28, 0x9f, 0xe8, 0xe5, 0x31, 0xb2, 0x04,
|
||||
0x9f, 0x50, 0xc1, 0x04, 0x9b, 0xf5, 0xad, 0x04, 0x9b, 0xa1, 0x6f, 0x4e, 0x44, 0x60, 0x7b, 0x82,
|
||||
0x02, 0x34, 0xf2, 0xbd, 0x82, 0x30, 0x33, 0xfa, 0x27, 0xfa, 0x0f, 0xd8, 0x84, 0x07, 0x74, 0x35,
|
||||
0x6c, 0xa6, 0x90, 0x05, 0x5b, 0xf8, 0xe1, 0x8a, 0x56, 0xb3, 0xa6, 0xcb, 0xe0, 0x0b, 0x51, 0x7a,
|
||||
0xe3, 0xfe, 0xc5, 0xdd, 0xdd, 0xcd, 0x5d, 0x87, 0xfc, 0xca, 0x9b, 0x27, 0x3e, 0xc4, 0x64, 0x10,
|
||||
0x06, 0xae, 0xc4, 0x7a, 0x78, 0xd0, 0xab, 0x8f, 0xfb, 0xea, 0x17, 0x48, 0xc1, 0xd5, 0x0e, 0xe0,
|
||||
0xd3, 0x45, 0x53, 0x26, 0x00, 0x08, 0x19, 0xc4, 0x79, 0x50, 0x9c, 0x9b, 0x9c, 0x77, 0x9b, 0x39,
|
||||
0xae, 0xa2, 0x00, 0xda, 0xea, 0xe3, 0x5f, 0x44, 0xa1, 0xa3, 0xd6, 0xdb, 0x30, 0x8b, 0x7a, 0xa3,
|
||||
0x3b, 0x37, 0xe7, 0xfd, 0xf6, 0x20, 0x83, 0x9a, 0xab, 0x9d, 0x79, 0xd7, 0x32, 0x65, 0x66, 0x3f,
|
||||
0xe6, 0x19, 0xdd, 0x66, 0x89, 0xad, 0x0d, 0xcd, 0x7c, 0x75, 0x95, 0x75, 0x32, 0xe6, 0x3d, 0xa3,
|
||||
0xa6, 0x37, 0x0e, 0x0f, 0x0f, 0xc6, 0xf0, 0x6f, 0x38, 0x00, 0x34, 0x17, 0xa3, 0x5b, 0xd2, 0xfe,
|
||||
0x0d, 0x3b, 0x90, 0xe4, 0xc9, 0x89, 0xe7, 0xc4, 0x38, 0x25, 0xbf, 0x8e, 0x86, 0x24, 0x5a, 0x06,
|
||||
0x81, 0xbb, 0xa2, 0x1d, 0xc5, 0xaa, 0x9a, 0xe3, 0x01, 0x35, 0x1a, 0xbf, 0x11, 0xda, 0x19, 0x0e,
|
||||
0xe8, 0xc7, 0x51, 0xe3, 0xc4, 0x68, 0x13, 0xf1, 0x9d, 0xc2, 0x40, 0xaa, 0x01, 0xc4, 0x1c, 0xff,
|
||||
0x47, 0x4f, 0xe5, 0x28, 0xec, 0xad, 0x79, 0x90, 0x41, 0x40, 0x52, 0x12, 0xfb, 0x7c, 0xda, 0x54,
|
||||
0x14, 0x6a, 0xa3, 0xdd, 0x93, 0x35, 0xc4, 0x6c, 0xb5, 0x0b, 0x93, 0x2a, 0xbc, 0x71, 0xe5, 0x47,
|
||||
0x31, 0x61, 0xd3, 0x29, 0xa0, 0x89, 0x34, 0xf2, 0x9f, 0xb4, 0x7b, 0x51, 0x35, 0x47, 0xe6, 0xa8,
|
||||
0x20, 0x89, 0x91, 0xda, 0x19, 0x69, 0x17, 0x9c, 0xb0, 0x13, 0x11, 0xe6, 0xf9, 0xcb, 0xd9, 0x5c,
|
||||
0xed, 0x8d, 0xc3, 0x7e, 0xd6, 0x1e, 0x2a, 0x2c, 0xaf, 0x55, 0xe8, 0x1a, 0x65, 0xcf, 0x87, 0x68,
|
||||
0x6f, 0x17, 0xe2, 0xe5, 0x57, 0xa1, 0x13, 0x45, 0x75, 0x3d, 0x91, 0x92, 0xbc, 0xbc, 0x97, 0x75,
|
||||
0x2a, 0x4d, 0x34, 0x33, 0xb7, 0xc5, 0x65, 0x45, 0xf1, 0x85, 0x37, 0x91, 0xcd, 0x3e, 0xd6, 0x33,
|
||||
0x92, 0x06, 0x9e, 0xde, 0x7d, 0x7c, 0xcd, 0x7f, 0x8c, 0x40, 0xb1, 0xd8, 0x11, 0x44, 0x8f, 0xcc,
|
||||
0x87, 0x54, 0x5f, 0xef, 0x39, 0x6c, 0x0e, 0xe9, 0x8a, 0x02, 0xfd, 0x75, 0x5f, 0xb5, 0x35, 0x50,
|
||||
0x72, 0xea, 0xf1, 0xf2, 0xc7, 0x13, 0xe5, 0x0f, 0x54, 0xe1, 0xaa, 0xe6, 0x44, 0xbf, 0x58, 0xbf,
|
||||
0x28, 0x8f, 0xea, 0x40, 0xef, 0x3c, 0x66, 0x53, 0x85, 0xa2, 0x15, 0x17, 0x35, 0xdd, 0xce, 0x13,
|
||||
0x7b, 0x19, 0x1b, 0xe4, 0xce, 0x92, 0x2d, 0x1d, 0x48, 0xef, 0x46, 0xf7, 0x90, 0xdc, 0x39, 0x66,
|
||||
0x9c, 0x26, 0x72, 0x53, 0xe5, 0x40, 0x81, 0x0a, 0x04, 0xa2, 0x95, 0xd3, 0xc7, 0xb4, 0x6a, 0xf8,
|
||||
0xf2, 0x72, 0x24, 0xbe, 0x83, 0x32, 0x3b, 0x6a, 0xd2, 0xbd, 0x16, 0x0e, 0x0f, 0xe6, 0xca, 0x23,
|
||||
0x27, 0x02, 0x24, 0xf5, 0xf8, 0x97, 0xde, 0xc4, 0x79, 0x24, 0x7c, 0xdb, 0xc8, 0xe4, 0xf8, 0xfb,
|
||||
0xbf, 0x7b, 0xbd, 0x39, 0x14, 0xba, 0xb8, 0x6e, 0x72, 0x77, 0xb9, 0xd3, 0x38, 0xd6, 0x83, 0x6f,
|
||||
0xf8, 0xe6, 0xfb, 0x67, 0xa7, 0x6a, 0xac, 0x3b, 0x00, 0x22, 0x1a, 0x02, 0x44, 0xec, 0x1b, 0x5f,
|
||||
0xdd, 0xc3, 0x8b, 0x35, 0x25, 0x50, 0xb4, 0xcd, 0xd1, 0x33, 0x98, 0xf4, 0xd7, 0x4b, 0x25, 0x0e,
|
||||
0x41, 0x22, 0x1c, 0x9d, 0x1f, 0xf0, 0xd9, 0xca, 0x92, 0xb2, 0xd1, 0xa0, 0x44, 0x8c, 0x66, 0x93,
|
||||
0x3e, 0xb7, 0x82, 0x6f, 0xbd, 0xba, 0x00, 0xd9, 0x06, 0x6e, 0xea, 0xb4, 0x3f, 0xfa, 0xdb, 0xf1,
|
||||
0x89, 0xd1, 0x20, 0x77, 0x1f, 0x86, 0x1f, 0xf7, 0x00, 0x1a, 0xb4, 0x7f, 0x7f, 0x6d, 0x9c, 0x18,
|
||||
0xad, 0xdd, 0x30, 0x8d, 0x16, 0x85, 0x42, 0x51, 0x7f, 0xf8, 0xf9, 0x3f, 0xf6, 0xc0, 0xb4, 0x05,
|
||||
0x9e, 0xc6, 0xbb, 0xdd, 0x30, 0x6d, 0x60, 0x0a, 0x19, 0xd7, 0x8d, 0x3d, 0x30, 0xc0, 0xcf, 0xe9,
|
||||
0xed, 0xa9, 0xa1, 0x37, 0xf6, 0xc0, 0x34, 0x68, 0xff, 0xea, 0xf6, 0xfc, 0xe4, 0x44, 0x3f, 0xde,
|
||||
0x03, 0xd4, 0xe2, 0x40, 0xc7, 0x27, 0x7a, 0x73, 0x0f, 0x50, 0x93, 0xf6, 0x6f, 0xdf, 0x9d, 0x18,
|
||||
0x7b, 0x40, 0x5a, 0xc0, 0xf4, 0x8d, 0x57, 0xbf, 0x99, 0x4e, 0xf7, 0xc0, 0x00, 0xd3, 0xb7, 0x1f,
|
||||
0xaf, 0xc9, 0xc7, 0xb9, 0x13, 0xb3, 0x3d, 0x60, 0x0d, 0x01, 0x76, 0x76, 0x76, 0xbf, 0x07, 0xa8,
|
||||
0x29, 0x80, 0x60, 0xd9, 0xf6, 0x00, 0xb5, 0x52, 0xa0, 0x3d, 0x6b, 0xdb, 0x6a, 0xa7, 0x50, 0xd5,
|
||||
0x22, 0xcd, 0xdf, 0xbf, 0x35, 0xed, 0x83, 0xa3, 0xa3, 0x0d, 0xf0, 0xe3, 0x0c, 0xfc, 0x3c, 0x07,
|
||||
0x7f, 0x74, 0x04, 0xe0, 0x6c, 0x0b, 0xfb, 0x09, 0x08, 0xe6, 0xfc, 0xfc, 0x16, 0xc1, 0x89, 0xe2,
|
||||
0xb1, 0xf8, 0xc9, 0x0f, 0x1f, 0xd4, 0xd7, 0x68, 0x9c, 0x80, 0xa4, 0x2e, 0x8c, 0x5a, 0xd3, 0x28,
|
||||
0x1f, 0x96, 0x90, 0x2a, 0x1f, 0x0b, 0xe2, 0x3b, 0x0d, 0xe3, 0x5f, 0x58, 0xbc, 0x7f, 0x70, 0xaf,
|
||||
0x2e, 0xcc, 0xa4, 0x8f, 0x9e, 0x18, 0xbe, 0xa2, 0xa1, 0x3a, 0x13, 0x93, 0xda, 0xbe, 0xb0, 0x36,
|
||||
0x69, 0xa2, 0xd2, 0xb7, 0x76, 0x64, 0xa4, 0xef, 0x9f, 0x61, 0x28, 0x27, 0x37, 0xe1, 0x84, 0x85,
|
||||
0x5b, 0x86, 0x7a, 0x76, 0xc3, 0x87, 0x6e, 0x8b, 0x18, 0x64, 0xf0, 0xe1, 0x6e, 0xcf, 0x42, 0xc1,
|
||||
0x74, 0xf7, 0x2e, 0x24, 0x4c, 0x69, 0x78, 0xf7, 0x61, 0x8f, 0x79, 0xc2, 0xf8, 0xe1, 0x9e, 0xf7,
|
||||
0xa0, 0x07, 0xc3, 0x0f, 0x77, 0x7b, 0x14, 0x1c, 0xf8, 0x1b, 0x16, 0xde, 0xa7, 0xc2, 0xa9, 0x83,
|
||||
0x5c, 0xf2, 0xe2, 0x99, 0x38, 0x33, 0x9c, 0xe4, 0xd3, 0x96, 0x80, 0x78, 0x9c, 0xe9, 0x8f, 0x9e,
|
||||
0xac, 0xa0, 0x43, 0x8a, 0x62, 0xf9, 0x28, 0xc5, 0xb2, 0x2d, 0x94, 0x5f, 0x60, 0x4c, 0x4a, 0x75,
|
||||
0x5b, 0x26, 0x1f, 0xc9, 0x21, 0x19, 0xee, 0x7a, 0xdf, 0x10, 0xef, 0x3f, 0xec, 0x7a, 0xdf, 0x14,
|
||||
0xef, 0xb3, 0x59, 0x95, 0xce, 0x09, 0xff, 0x44, 0x81, 0xe5, 0xf1, 0xb9, 0x05, 0xd1, 0x44, 0x70,
|
||||
0x2a, 0xda, 0x0d, 0x30, 0x00, 0xde, 0xf4, 0x49, 0x4f, 0xec, 0x74, 0xe2, 0x29, 0x0e, 0x93, 0x7a,
|
||||
0xcb, 0xc5, 0x98, 0x85, 0x34, 0x71, 0xcd, 0x23, 0xa1, 0x2c, 0x38, 0xda, 0x8d, 0xc4, 0x67, 0xe9,
|
||||
0xed, 0x5d, 0x22, 0xaa, 0x02, 0x4a, 0xb0, 0xba, 0x85, 0xd9, 0x62, 0x96, 0x86, 0xaa, 0xfd, 0xce,
|
||||
0xa0, 0x09, 0x8f, 0xdf, 0x3f, 0x27, 0xe1, 0xd8, 0x51, 0xb9, 0x83, 0xe7, 0x94, 0x4c, 0x9a, 0xaf,
|
||||
0x27, 0x10, 0xe9, 0x67, 0x13, 0xdd, 0x7d, 0x17, 0xfb, 0xff, 0x5d, 0x4a, 0x92, 0x56, 0x22, 0xa9,
|
||||
0xf7, 0x0f, 0xbd, 0x71, 0x14, 0x74, 0xb7, 0x97, 0xc7, 0xde, 0xa9, 0xbf, 0x57, 0x3c, 0xb4, 0x75,
|
||||
0xf6, 0x4e, 0xea, 0xac, 0x38, 0x11, 0x39, 0x03, 0x43, 0xce, 0x80, 0x27, 0x8e, 0xb7, 0xc3, 0x35,
|
||||
0xcd, 0x56, 0x2a, 0x63, 0x29, 0x9d, 0x02, 0xf2, 0x4a, 0x81, 0x43, 0x21, 0x6c, 0x69, 0x63, 0xf5,
|
||||
0x2d, 0x89, 0xeb, 0x52, 0xe2, 0xbc, 0x0f, 0xfc, 0x16, 0x81, 0xeb, 0x82, 0xb7, 0x82, 0x4c, 0x9b,
|
||||
0xcd, 0x1c, 0x07, 0x92, 0xeb, 0x68, 0x23, 0x5e, 0xaa, 0xb4, 0x5e, 0xa4, 0x6c, 0x48, 0xca, 0x92,
|
||||
0xe8, 0x3e, 0x9a, 0xc6, 0x0e, 0x9a, 0x6f, 0x25, 0xd5, 0x78, 0x3b, 0xa9, 0xc6, 0xbf, 0x48, 0xaa,
|
||||
0xf9, 0x76, 0x52, 0xcd, 0x7f, 0x91, 0x54, 0xeb, 0xed, 0xa4, 0x5a, 0xff, 0x14, 0xa9, 0x0d, 0x9d,
|
||||
0x0e, 0x77, 0xea, 0x34, 0x6a, 0x57, 0xc6, 0x18, 0xe4, 0xe9, 0x82, 0xb1, 0xa4, 0xf7, 0x28, 0x19,
|
||||
0xdc, 0xd0, 0x79, 0xde, 0x53, 0x1f, 0xfb, 0xdf, 0x12, 0x26, 0xcf, 0x7e, 0x4b, 0xa6, 0x53, 0xee,
|
||||
0xf1, 0xa2, 0xbd, 0xe4, 0x47, 0x0f, 0x4e, 0x40, 0xa6, 0x4e, 0x08, 0xd5, 0x00, 0xe6, 0x9c, 0x7b,
|
||||
0xed, 0x6b, 0x74, 0x55, 0x22, 0x0e, 0xa8, 0x83, 0x68, 0xe6, 0x19, 0x37, 0xec, 0x68, 0x27, 0x53,
|
||||
0xd3, 0xbd, 0x4c, 0x41, 0x36, 0x42, 0xee, 0xd8, 0x34, 0x64, 0x51, 0x66, 0xf0, 0x5c, 0x42, 0x53,
|
||||
0xc1, 0x40, 0xb9, 0x20, 0xee, 0xde, 0xef, 0x17, 0x84, 0xb5, 0x97, 0xe6, 0xe9, 0x32, 0xf6, 0x8f,
|
||||
0x6c, 0xcb, 0xb5, 0x97, 0xae, 0x15, 0x33, 0xf2, 0x84, 0xb9, 0x0e, 0x1e, 0xc8, 0x84, 0x2a, 0xc6,
|
||||
0x25, 0xd3, 0xd0, 0x5f, 0x60, 0x54, 0xee, 0x88, 0x15, 0xcb, 0x07, 0x89, 0xd3, 0x8f, 0x65, 0x41,
|
||||
0x42, 0xdf, 0x17, 0x22, 0x8c, 0xfe, 0x30, 0x74, 0x66, 0xf3, 0x98, 0x85, 0x3b, 0x00, 0x1a, 0xfd,
|
||||
0x53, 0xdb, 0xc6, 0xa3, 0x69, 0xbb, 0x30, 0x34, 0xfb, 0xe7, 0x4b, 0xcb, 0xdd, 0x8e, 0x10, 0xc2,
|
||||
0xad, 0xa6, 0x02, 0xe0, 0x7f, 0xbf, 0x74, 0x2d, 0xa8, 0xc5, 0x22, 0x16, 0xc6, 0xa7, 0x93, 0xaf,
|
||||
0x96, 0x0d, 0xd5, 0x03, 0x16, 0x65, 0x0a, 0x1d, 0x33, 0xa8, 0x03, 0x19, 0xf3, 0x26, 0x54, 0xf3,
|
||||
0xd5, 0xb5, 0x2c, 0x0f, 0x94, 0xf8, 0xd3, 0xd1, 0x91, 0xf3, 0xb9, 0x16, 0x42, 0x3d, 0xfe, 0xc8,
|
||||
0x14, 0x55, 0x83, 0x6f, 0xb2, 0x01, 0x54, 0xdd, 0x2a, 0xdb, 0x9c, 0x1e, 0x96, 0x16, 0x47, 0x46,
|
||||
0x79, 0x3b, 0xe1, 0x68, 0x1b, 0xbe, 0xbf, 0xdd, 0x79, 0xf0, 0x5e, 0x5e, 0xf8, 0xee, 0x70, 0xa1,
|
||||
0xfa, 0x39, 0xbb, 0xb9, 0x56, 0x40, 0x86, 0x50, 0xfe, 0xf0, 0xcd, 0x50, 0x51, 0x94, 0x38, 0x7b,
|
||||
0x2a, 0x20, 0xdb, 0x5f, 0xfc, 0x01, 0x0f, 0xc3, 0x15, 0xd0, 0xcc, 0xd7, 0x40, 0x50, 0xfd, 0x60,
|
||||
0xb3, 0x4d, 0x96, 0x3b, 0x85, 0xa2, 0x26, 0x1b, 0xf2, 0x96, 0xd2, 0x86, 0x88, 0xc8, 0xba, 0xcf,
|
||||
0x3a, 0xfe, 0x9e, 0x0b, 0xa9, 0xdf, 0xde, 0x14, 0x52, 0x8f, 0xdb, 0xed, 0x66, 0x3b, 0x17, 0x53,
|
||||
0xd9, 0x7a, 0xc3, 0x7e, 0x72, 0x31, 0xd3, 0xa4, 0x34, 0x0d, 0x9a, 0x6f, 0x08, 0x85, 0x7f, 0x3f,
|
||||
0xcb, 0x31, 0x63, 0xef, 0x0d, 0x8b, 0x9b, 0x5c, 0x78, 0xeb, 0x02, 0xd5, 0x4d, 0x8b, 0x96, 0x76,
|
||||
0xf5, 0xa7, 0xb2, 0x4c, 0xce, 0x85, 0x4c, 0x4f, 0x25, 0x7f, 0xff, 0xff, 0x32, 0xce, 0xc4, 0xde,
|
||||
0xb8, 0x8b, 0x90, 0x96, 0x27, 0xf7, 0x1b, 0x85, 0xa6, 0x39, 0x2c, 0xe2, 0x6d, 0x91, 0xbd, 0xa6,
|
||||
0x68, 0x49, 0x6b, 0xfb, 0xe6, 0xd3, 0xaa, 0x93, 0xf4, 0x60, 0x63, 0x6d, 0x1c, 0x7b, 0x68, 0x14,
|
||||
0xa0, 0x8b, 0xf2, 0x34, 0x45, 0x66, 0x2f, 0x60, 0xaa, 0xf8, 0x6a, 0xc7, 0xb1, 0xcb, 0x72, 0x23,
|
||||
0x01, 0xcb, 0x4a, 0x4f, 0xb3, 0xe9, 0x07, 0x26, 0x6e, 0x9e, 0x29, 0xec, 0x93, 0x77, 0x64, 0xe4,
|
||||
0x2c, 0x5f, 0x92, 0x84, 0x87, 0x82, 0xa4, 0x9a, 0x27, 0x19, 0xb1, 0x98, 0x1b, 0xa9, 0xfa, 0x8c,
|
||||
0x4e, 0x63, 0xe3, 0xec, 0x35, 0x13, 0x5b, 0x09, 0x78, 0xb6, 0x83, 0x61, 0x97, 0xef, 0x4d, 0x2c,
|
||||
0xa9, 0x2c, 0x25, 0xdd, 0x95, 0xa4, 0x0b, 0x67, 0x52, 0xc5, 0x23, 0x20, 0x98, 0xca, 0x14, 0x1c,
|
||||
0xc5, 0xf6, 0xe1, 0xa4, 0x5e, 0x91, 0x97, 0x72, 0xd7, 0x84, 0xa3, 0x81, 0xd8, 0xf6, 0xe8, 0x6d,
|
||||
0x07, 0x55, 0xf0, 0x4b, 0xc3, 0xd8, 0x13, 0x87, 0x62, 0x13, 0x8f, 0xc4, 0xb1, 0x01, 0x6b, 0x51,
|
||||
0xbe, 0xdf, 0xa5, 0x59, 0x26, 0xee, 0x68, 0x54, 0x47, 0x7c, 0x5b, 0xa2, 0x86, 0xb1, 0xe3, 0x6c,
|
||||
0x6e, 0x85, 0x67, 0xfe, 0x84, 0x29, 0xd8, 0xb8, 0xd2, 0x07, 0xad, 0x93, 0x4e, 0xbb, 0xad, 0x56,
|
||||
0x41, 0x4e, 0x4e, 0xd5, 0xfc, 0x32, 0x5c, 0xc6, 0xb1, 0xcf, 0xcf, 0xc7, 0xad, 0xc5, 0xb1, 0x82,
|
||||
0x72, 0xc3, 0xe6, 0x46, 0x7b, 0x94, 0x58, 0x2d, 0xd4, 0xed, 0xd2, 0x94, 0xbe, 0x7f, 0xb6, 0xd6,
|
||||
0x5b, 0x79, 0x48, 0x62, 0xec, 0xdf, 0xa2, 0xa2, 0x65, 0xf7, 0xbf, 0x68, 0x48, 0x52, 0xc6, 0x89,
|
||||
0x42, 0x20, 0xfb, 0xfe, 0x99, 0x0e, 0x2f, 0xde, 0xc4, 0x75, 0x8a, 0x66, 0xcb, 0x76, 0x61, 0x12,
|
||||
0xba, 0x69, 0xc6, 0x03, 0x9a, 0x74, 0x72, 0xf0, 0x84, 0xc4, 0xba, 0x7f, 0x2e, 0x37, 0x0d, 0x52,
|
||||
0xb3, 0x29, 0x1d, 0xde, 0xc0, 0xe1, 0x8d, 0x92, 0xe1, 0xb7, 0xcb, 0x68, 0x3e, 0xe6, 0x42, 0xda,
|
||||
0x8f, 0xa0, 0x89, 0x08, 0x9a, 0x3b, 0x10, 0x10, 0x47, 0xee, 0xf1, 0xee, 0xc7, 0xd1, 0x42, 0x1c,
|
||||
0xad, 0x12, 0x1c, 0x23, 0x7e, 0x96, 0x6c, 0xff, 0xe0, 0x36, 0x0e, 0x6e, 0x97, 0x31, 0x70, 0x79,
|
||||
0x47, 0x22, 0xe6, 0x45, 0x7e, 0xb8, 0x1f, 0xc1, 0x31, 0x22, 0x38, 0x2e, 0x41, 0x70, 0xef, 0x2f,
|
||||
0x5f, 0x23, 0xfe, 0x13, 0x8e, 0xfd, 0xa9, 0x64, 0xec, 0xa9, 0x67, 0xb9, 0xfe, 0x6c, 0xff, 0xe0,
|
||||
0x13, 0x1c, 0x7c, 0xb2, 0x73, 0xf0, 0x0e, 0xe1, 0xd1, 0xd4, 0xf9, 0x51, 0x81, 0x94, 0xe7, 0xb2,
|
||||
0x32, 0x34, 0x40, 0x02, 0x03, 0xf3, 0xed, 0x90, 0xc0, 0x77, 0x3c, 0x48, 0x75, 0xba, 0x5c, 0x47,
|
||||
0xf9, 0xe1, 0x0d, 0x8a, 0x37, 0x1c, 0x7e, 0x44, 0xbd, 0xfd, 0x51, 0x4d, 0xa2, 0xda, 0xe1, 0x77,
|
||||
0xdf, 0x1a, 0x3f, 0x19, 0xed, 0x6e, 0x92, 0x94, 0x83, 0x13, 0x95, 0xdb, 0x1c, 0x9b, 0xe6, 0x95,
|
||||
0x3f, 0x72, 0x1e, 0xcf, 0xdc, 0x91, 0x83, 0x4e, 0x41, 0x29, 0xdc, 0x0e, 0x61, 0xea, 0xcb, 0x8b,
|
||||
0x52, 0xbc, 0x1f, 0xb2, 0x79, 0x08, 0x2d, 0xbd, 0x6b, 0xf0, 0x8c, 0xae, 0x4a, 0xb8, 0xce, 0x03,
|
||||
0x03, 0x33, 0x8e, 0x2e, 0x04, 0xb8, 0xfd, 0xad, 0xd6, 0xc4, 0x73, 0x7a, 0xb8, 0x5f, 0xbe, 0xbd,
|
||||
0xe5, 0xc5, 0x5d, 0xa6, 0xfa, 0x27, 0xfa, 0xcc, 0x5e, 0xb1, 0x5d, 0x7c, 0x50, 0xb2, 0x8d, 0xe6,
|
||||
0x25, 0xf8, 0xd0, 0x51, 0xe3, 0xe1, 0xc5, 0x7c, 0xa5, 0xed, 0x7d, 0xc6, 0x36, 0xb1, 0xdc, 0x07,
|
||||
0x8b, 0x74, 0x0a, 0x40, 0xfa, 0x36, 0x12, 0xdc, 0xd7, 0xda, 0x8d, 0x43, 0xe7, 0x38, 0x84, 0xc4,
|
||||
0x23, 0x27, 0x77, 0xba, 0x91, 0x69, 0x89, 0x90, 0x33, 0xe1, 0x2d, 0x03, 0xbc, 0x60, 0xf1, 0xde,
|
||||
0x71, 0xf1, 0x46, 0x8a, 0x3c, 0xb7, 0xe6, 0xb1, 0x27, 0xf2, 0xf7, 0xeb, 0xab, 0x9f, 0xe3, 0x38,
|
||||
0xb8, 0x83, 0xec, 0x81, 0x45, 0x71, 0xd7, 0xdb, 0x7d, 0xeb, 0x23, 0x77, 0x53, 0x21, 0xbb, 0x47,
|
||||
0x11, 0xcf, 0x1d, 0x3c, 0x6f, 0x14, 0x05, 0x3e, 0xc4, 0xc8, 0x7b, 0xf6, 0x2d, 0xd6, 0xf8, 0x13,
|
||||
0x60, 0x33, 0x5e, 0x46, 0x78, 0xbc, 0x02, 0x26, 0xa9, 0x42, 0xec, 0xda, 0x7d, 0x23, 0x24, 0xc3,
|
||||
0xcb, 0xf2, 0x88, 0xf1, 0x8c, 0xaf, 0x65, 0x3f, 0x68, 0x07, 0x09, 0x02, 0x71, 0x61, 0xe7, 0xf6,
|
||||
0x06, 0x56, 0x53, 0xa3, 0x75, 0x31, 0x1d, 0xb9, 0x87, 0x12, 0xf3, 0x99, 0xbc, 0xf7, 0xc3, 0x05,
|
||||
0x9e, 0x15, 0x4b, 0xcf, 0x1a, 0xca, 0x1b, 0x2d, 0x0a, 0xc5, 0x13, 0xc6, 0xf2, 0xc8, 0x2b, 0x3f,
|
||||
0x6c, 0x8c, 0x57, 0x4c, 0x22, 0x10, 0x1f, 0xde, 0x32, 0xf1, 0x6a, 0x11, 0xc2, 0xc4, 0xaa, 0x56,
|
||||
0x72, 0x18, 0xf9, 0x60, 0xe3, 0xbe, 0xce, 0xd9, 0x74, 0x96, 0x4a, 0x4f, 0x8b, 0xbb, 0x34, 0x79,
|
||||
0x49, 0xc1, 0x0a, 0xc1, 0xf1, 0x43, 0xdc, 0x94, 0xb7, 0x8b, 0x50, 0xce, 0x77, 0xcc, 0x82, 0x94,
|
||||
0x6a, 0x00, 0x33, 0xe1, 0xf4, 0x06, 0x2c, 0xa5, 0x3b, 0x50, 0x30, 0x96, 0xa7, 0x5c, 0x28, 0x92,
|
||||
0xff, 0x74, 0x0c, 0x9e, 0x99, 0x42, 0x72, 0x66, 0x5e, 0x34, 0x18, 0x9a, 0x71, 0x18, 0x28, 0x00,
|
||||
0x28, 0x25, 0xca, 0x7c, 0xe9, 0xc6, 0x72, 0xfa, 0xfc, 0x66, 0x00, 0x57, 0x1e, 0xc5, 0xe3, 0xfb,
|
||||
0x02, 0x71, 0x6d, 0xfe, 0xc4, 0x37, 0x5d, 0xf0, 0x03, 0xe8, 0xfe, 0x24, 0xb3, 0x19, 0x71, 0x80,
|
||||
0xc4, 0xd0, 0xf9, 0xd1, 0x91, 0x64, 0xdb, 0x02, 0xb4, 0xb9, 0x9b, 0x80, 0x62, 0xba, 0x53, 0x03,
|
||||
0xe8, 0x0b, 0xcb, 0x9e, 0x2b, 0x32, 0x76, 0x9a, 0xfd, 0xe7, 0x04, 0xd4, 0x10, 0x99, 0x42, 0x86,
|
||||
0x8a, 0xd5, 0x02, 0xc7, 0xcb, 0x9f, 0x47, 0x29, 0xb3, 0x9a, 0x2f, 0xbc, 0x0e, 0xc5, 0x78, 0xf6,
|
||||
0x25, 0x77, 0x50, 0x8a, 0x0f, 0xfd, 0xe4, 0x7c, 0xee, 0xee, 0xdc, 0x97, 0xf1, 0x0a, 0xd0, 0x28,
|
||||
0x64, 0x6d, 0xe7, 0x7e, 0x51, 0x11, 0x96, 0x5b, 0x8a, 0xf6, 0x96, 0xd3, 0xa9, 0x22, 0xaf, 0x2a,
|
||||
0x07, 0x3d, 0xbb, 0xd9, 0x04, 0xf5, 0x31, 0x51, 0xd6, 0xde, 0x72, 0x78, 0x15, 0x99, 0x80, 0x52,
|
||||
0xbd, 0x1c, 0xf6, 0xee, 0x7d, 0x02, 0x9b, 0x5a, 0x2d, 0xac, 0xe9, 0x74, 0x07, 0x17, 0xbf, 0x95,
|
||||
0x01, 0x3f, 0xae, 0xd5, 0x75, 0xb2, 0xc4, 0x90, 0x1e, 0x81, 0x8b, 0x48, 0x93, 0x3c, 0xbc, 0x84,
|
||||
0x24, 0x9e, 0xa6, 0x2b, 0xc9, 0xc4, 0x1a, 0xf2, 0x8c, 0x4c, 0x0a, 0x47, 0xcc, 0x5b, 0x4e, 0x89,
|
||||
0x9b, 0x19, 0x1f, 0x05, 0xde, 0x3b, 0x29, 0xbf, 0x92, 0xef, 0xdd, 0xe2, 0x59, 0x15, 0x5e, 0x9d,
|
||||
0xaa, 0xc9, 0x61, 0xc2, 0x2d, 0x6f, 0x4f, 0xf1, 0xa0, 0xfc, 0x6e, 0x35, 0xc2, 0x94, 0x0c, 0xc9,
|
||||
0xe2, 0xda, 0xa3, 0x11, 0xf2, 0x65, 0xc5, 0x3b, 0x4d, 0xa5, 0x73, 0xbf, 0xbf, 0xa7, 0x39, 0x91,
|
||||
0x5a, 0xb5, 0x38, 0x5e, 0x73, 0xae, 0x9c, 0x70, 0xd7, 0x71, 0xbc, 0xcb, 0xbb, 0xfc, 0x08, 0x09,
|
||||
0x8c, 0xd4, 0xca, 0x09, 0x5c, 0xde, 0x97, 0x81, 0x73, 0x9e, 0x84, 0x3c, 0x42, 0x06, 0x89, 0xe6,
|
||||
0x2e, 0x62, 0x77, 0x57, 0x5b, 0xa3, 0x39, 0xfc, 0x6e, 0x7a, 0x77, 0xd7, 0xb4, 0xb0, 0x94, 0xb9,
|
||||
0x31, 0x10, 0xb2, 0x93, 0x5a, 0x41, 0x43, 0x13, 0xb7, 0x26, 0xa7, 0x11, 0x3a, 0x55, 0xb0, 0x6a,
|
||||
0xb5, 0x23, 0xaf, 0xc7, 0xdc, 0xba, 0x0c, 0x4f, 0x91, 0xcb, 0x3c, 0xd0, 0x22, 0x68, 0xfb, 0xfc,
|
||||
0xd2, 0x9c, 0x68, 0x09, 0x1d, 0xd0, 0x14, 0xf2, 0x1e, 0x3c, 0x31, 0x19, 0x87, 0xfe, 0x13, 0x54,
|
||||
0x2f, 0x64, 0xe2, 0xb3, 0x08, 0xaf, 0x09, 0xe1, 0x76, 0xb4, 0x1f, 0x42, 0xa2, 0x3a, 0x67, 0xe4,
|
||||
0x0b, 0x77, 0x41, 0x5f, 0x48, 0x10, 0x82, 0x73, 0x85, 0x88, 0x82, 0x89, 0x3f, 0xc7, 0xc4, 0x73,
|
||||
0xd9, 0x88, 0x5f, 0xb5, 0xc9, 0x8e, 0x8f, 0x66, 0x68, 0x99, 0x80, 0x3a, 0xbd, 0xbd, 0x24, 0x4e,
|
||||
0x1e, 0x29, 0xef, 0xc9, 0x92, 0x38, 0x4f, 0x76, 0x05, 0xae, 0x2a, 0x7f, 0xa7, 0x72, 0x04, 0xd1,
|
||||
0x83, 0xe2, 0xe8, 0x0e, 0xf8, 0x4c, 0xe9, 0x2c, 0x5d, 0xdf, 0xe6, 0xb7, 0x38, 0x6a, 0xc0, 0x47,
|
||||
0xec, 0xdb, 0x3e, 0x9e, 0xb3, 0xe4, 0x37, 0x41, 0x75, 0x4d, 0xe1, 0xb7, 0x52, 0x4d, 0x84, 0x70,
|
||||
0x47, 0xb1, 0x1f, 0x5a, 0x33, 0x86, 0x22, 0xbd, 0x8c, 0xd9, 0x02, 0xe3, 0x92, 0x7d, 0x19, 0x40,
|
||||
0x15, 0x02, 0x89, 0x83, 0x00, 0x83, 0xf1, 0x8b, 0x00, 0x38, 0x44, 0x4f, 0x4a, 0xae, 0x21, 0x0b,
|
||||
0xae, 0x11, 0x29, 0x2d, 0x86, 0xe9, 0x0c, 0xf9, 0x88, 0xc7, 0x16, 0x2e, 0x6f, 0x41, 0x44, 0x5a,
|
||||
0x01, 0x63, 0x54, 0xc4, 0xa8, 0x71, 0x6c, 0xaa, 0x8a, 0x50, 0xfc, 0x8e, 0x26, 0xa2, 0x1f, 0xf0,
|
||||
0xbb, 0xa7, 0x9d, 0x7a, 0x9d, 0x56, 0xf9, 0x6b, 0x3c, 0xc3, 0x50, 0xcd, 0xee, 0x8f, 0xd6, 0xa3,
|
||||
0xda, 0xd7, 0x68, 0x10, 0x98, 0x0d, 0x0c, 0x1a, 0xea, 0xba, 0x02, 0x39, 0x91, 0xb8, 0x5b, 0xdb,
|
||||
0xe3, 0xa9, 0x55, 0xff, 0xdf, 0x9c, 0x05, 0x17, 0xfb, 0x32, 0x74, 0x21, 0x58, 0x8b, 0x83, 0x1a,
|
||||
0x11, 0x9e, 0x01, 0x00, 0x40, 0x0e, 0xd0, 0xab, 0x8b, 0x4b, 0xc5, 0x78, 0x15, 0x93, 0x48, 0xf7,
|
||||
0x4f, 0x47, 0xbc, 0x1f, 0x07, 0x46, 0xb4, 0xa8, 0xf0, 0x82, 0x1c, 0x3f, 0xfd, 0x11, 0xa5, 0xbd,
|
||||
0xbd, 0x29, 0x14, 0x16, 0x2c, 0x9e, 0xfb, 0xd8, 0x21, 0xf5, 0x23, 0xbc, 0xeb, 0x9b, 0x6b, 0x96,
|
||||
0xc4, 0x3e, 0x88, 0xe3, 0xa9, 0xf8, 0x6c, 0xce, 0xdc, 0x60, 0x48, 0xfb, 0x95, 0x9e, 0x48, 0xcd,
|
||||
0x65, 0xb5, 0x22, 0xbe, 0xe4, 0x72, 0xbd, 0x9f, 0x91, 0xec, 0xa0, 0x57, 0x17, 0x2f, 0xd2, 0xb6,
|
||||
0x7a, 0xd9, 0x98, 0x4a, 0x3a, 0x68, 0x88, 0x83, 0x86, 0x10, 0xb2, 0xb3, 0x71, 0x85, 0x11, 0xf2,
|
||||
0x8e, 0x41, 0x7f, 0x64, 0x3d, 0xb2, 0x0c, 0x64, 0x9e, 0x14, 0xde, 0xbd, 0x79, 0xa3, 0x5f, 0xc1,
|
||||
0xf5, 0x39, 0xb4, 0x16, 0x41, 0x97, 0xfc, 0x6c, 0x85, 0x78, 0xb2, 0x05, 0xf5, 0x3c, 0x5e, 0x06,
|
||||
0x20, 0x9c, 0x06, 0xe4, 0xd3, 0xb1, 0xe5, 0x26, 0x1d, 0xcf, 0xb4, 0x03, 0xeb, 0xda, 0x9c, 0x55,
|
||||
0xd9, 0xcc, 0xcf, 0x3a, 0xc6, 0x36, 0x4e, 0x33, 0x4b, 0x4c, 0x7b, 0x4e, 0xff, 0x8e, 0x81, 0x3b,
|
||||
0x04, 0x4b, 0x9c, 0x80, 0x9a, 0x06, 0xfe, 0x13, 0xe8, 0x83, 0x3c, 0x9a, 0x81, 0x67, 0x2b, 0xc6,
|
||||
0xa2, 0xbb, 0x17, 0xc5, 0xa2, 0x8b, 0xd8, 0xe9, 0xd5, 0x1d, 0x31, 0x6e, 0x2c, 0xbb, 0xbd, 0x15,
|
||||
0xb1, 0x69, 0xb3, 0xcc, 0xa8, 0xe1, 0x59, 0x96, 0x62, 0x37, 0x98, 0x9f, 0xa2, 0x90, 0xcd, 0x84,
|
||||
0x94, 0x72, 0xe5, 0xc2, 0xc3, 0x42, 0x8a, 0x58, 0x4b, 0x48, 0x76, 0x41, 0xcf, 0x6d, 0x49, 0xcb,
|
||||
0x63, 0x51, 0x44, 0x5c, 0xbc, 0xb5, 0xc9, 0xc2, 0x57, 0xda, 0xc5, 0xa7, 0x43, 0x26, 0x45, 0x2d,
|
||||
0xeb, 0x45, 0x79, 0x77, 0x45, 0xf4, 0x8a, 0xf8, 0xd5, 0x16, 0x41, 0x35, 0xe9, 0x9e, 0xe2, 0x7d,
|
||||
0xa1, 0xfe, 0xb5, 0xb8, 0x2b, 0x4e, 0xce, 0x96, 0x61, 0x08, 0xfa, 0x9f, 0xd2, 0x90, 0x37, 0xc4,
|
||||
0xaf, 0x4f, 0xe9, 0x46, 0xb5, 0xba, 0xd1, 0x6c, 0x6a, 0xb4, 0xb3, 0xa6, 0x97, 0xae, 0x6f, 0xf5,
|
||||
0x89, 0xd3, 0x86, 0x53, 0xbf, 0x42, 0x16, 0xa7, 0x45, 0xf2, 0xd9, 0x1d, 0x88, 0xb4, 0xb2, 0xc0,
|
||||
0x26, 0x53, 0x47, 0x9c, 0x36, 0xea, 0x16, 0xb7, 0xf1, 0x2a, 0x87, 0xdf, 0xbd, 0x3b, 0x39, 0x39,
|
||||
0xe9, 0x92, 0x7f, 0xf7, 0x97, 0x61, 0x71, 0x65, 0x40, 0x83, 0x1f, 0xb1, 0x25, 0x40, 0xe6, 0x20,
|
||||
0x31, 0x62, 0x8b, 0x89, 0xd4, 0xb8, 0x54, 0xef, 0x7d, 0x02, 0x26, 0x05, 0xef, 0x19, 0x77, 0x65,
|
||||
0x91, 0x35, 0x65, 0xc2, 0x81, 0xad, 0x10, 0x0b, 0xd7, 0x1a, 0x0d, 0x01, 0x03, 0xe1, 0x00, 0x96,
|
||||
0x11, 0xc2, 0x81, 0xa2, 0x12, 0x1b, 0xe5, 0x15, 0xf1, 0x77, 0x95, 0x05, 0xa4, 0x50, 0x0e, 0x40,
|
||||
0x48, 0xaa, 0x8e, 0xf7, 0x95, 0xc9, 0x7b, 0xb1, 0x58, 0x00, 0x45, 0xc4, 0xf2, 0x26, 0xe0, 0x61,
|
||||
0xa7, 0x30, 0xf8, 0x20, 0x6b, 0x11, 0x81, 0x2a, 0x55, 0x4e, 0x93, 0xc5, 0xb4, 0x5c, 0x60, 0x93,
|
||||
0xaf, 0x62, 0x94, 0x5f, 0xd7, 0xd8, 0xc7, 0xf6, 0xe1, 0x0a, 0x44, 0xea, 0x47, 0xfc, 0xba, 0x19,
|
||||
0xf2, 0xc8, 0xc1, 0x04, 0xf7, 0x7f, 0x63, 0x2c, 0x20, 0x56, 0x4c, 0x0e, 0x21, 0x85, 0x33, 0x4e,
|
||||
0x89, 0x33, 0x15, 0x1c, 0xe0, 0x81, 0x29, 0x7e, 0x24, 0x6a, 0x02, 0x82, 0xb5, 0x63, 0xd4, 0x4d,
|
||||
0xec, 0x62, 0xe3, 0xe0, 0xec, 0x4c, 0x12, 0x67, 0xa5, 0x72, 0xc9, 0x67, 0xca, 0x2f, 0x47, 0xa6,
|
||||
0xb7, 0xd4, 0x20, 0x52, 0xb0, 0x10, 0x8a, 0xbf, 0x82, 0x10, 0x35, 0xe9, 0xfc, 0x90, 0x43, 0xbc,
|
||||
0x39, 0xed, 0xcd, 0x04, 0x0b, 0x8a, 0xd4, 0x0b, 0x02, 0x4a, 0x8f, 0xf7, 0x94, 0xc1, 0x2a, 0x96,
|
||||
0x11, 0x78, 0xc3, 0xc4, 0xb8, 0xa4, 0x36, 0x04, 0xe8, 0x43, 0x96, 0xde, 0x83, 0xe7, 0x3f, 0x79,
|
||||
0x52, 0xab, 0xd5, 0xcc, 0x38, 0x42, 0x61, 0xb3, 0x8f, 0xbe, 0x1b, 0xe3, 0x95, 0x6b, 0xe5, 0x1a,
|
||||
0x0f, 0x87, 0xc9, 0x75, 0xe2, 0x76, 0x65, 0x11, 0x64, 0x0e, 0x24, 0x0c, 0x60, 0x6a, 0x49, 0x2b,
|
||||
0x9e, 0x1f, 0xc4, 0xda, 0xd0, 0x6d, 0xbc, 0x76, 0xb6, 0xb5, 0x83, 0x8b, 0x5b, 0x16, 0x49, 0x99,
|
||||
0x6b, 0x66, 0x05, 0x6f, 0x1f, 0x64, 0x22, 0x6f, 0x4c, 0x11, 0xa5, 0xdd, 0x5e, 0x9c, 0xaa, 0x95,
|
||||
0x9d, 0x9b, 0xb4, 0x6d, 0x0e, 0xcd, 0xa6, 0x53, 0xc7, 0xc6, 0x63, 0x7e, 0x44, 0x69, 0x22, 0xfc,
|
||||
0x4e, 0x70, 0x1d, 0x54, 0x13, 0xcf, 0x74, 0x29, 0x4d, 0x7d, 0x0f, 0x18, 0xee, 0xa5, 0xf4, 0xe5,
|
||||
0x09, 0x30, 0xc5, 0x68, 0xec, 0x81, 0xc4, 0xb3, 0x26, 0x95, 0x33, 0x5e, 0xf3, 0x96, 0xec, 0x13,
|
||||
0x17, 0x1c, 0x89, 0xb8, 0xf6, 0x55, 0xbe, 0xeb, 0x2d, 0x51, 0x88, 0x73, 0x78, 0x89, 0xa8, 0xf1,
|
||||
0x08, 0x1d, 0x48, 0x38, 0xb5, 0xf1, 0x44, 0xb8, 0xb4, 0xac, 0x21, 0x55, 0xd8, 0x06, 0xe2, 0x7e,
|
||||
0xcd, 0xb5, 0x76, 0x5b, 0x77, 0x62, 0xdc, 0xc9, 0xce, 0x5b, 0xa6, 0xbc, 0x89, 0xdc, 0x9d, 0x9c,
|
||||
0x2a, 0x7a, 0xd1, 0x12, 0xfe, 0x58, 0x63, 0x1f, 0x98, 0xe0, 0x96, 0x88, 0xf4, 0xd1, 0x2c, 0x51,
|
||||
0xad, 0x6b, 0xa9, 0xe2, 0x48, 0x97, 0xdf, 0xec, 0x57, 0xb6, 0x1c, 0x7d, 0x33, 0xf3, 0x23, 0x78,
|
||||
0xcc, 0x89, 0xff, 0x70, 0x85, 0x38, 0x1d, 0x18, 0x75, 0x92, 0x71, 0xe5, 0x9d, 0xff, 0x1d, 0x61,
|
||||
0x0d, 0x31, 0x55, 0x73, 0xd1, 0x2d, 0x2d, 0x64, 0x30, 0x52, 0xd3, 0x7e, 0x35, 0x0d, 0x46, 0x24,
|
||||
0x19, 0x5f, 0xd9, 0x46, 0x70, 0x54, 0x82, 0xe0, 0x48, 0x62, 0x38, 0xca, 0x45, 0xbc, 0x90, 0xf3,
|
||||
0x7b, 0xcd, 0x8f, 0x46, 0x92, 0x5f, 0x85, 0x3d, 0x55, 0xb2, 0x85, 0x5d, 0x80, 0x0e, 0xe8, 0x49,
|
||||
0xb4, 0xaa, 0xe7, 0xe2, 0xd5, 0xc2, 0xc8, 0x85, 0xb1, 0x61, 0xc1, 0x9b, 0xf2, 0x63, 0xab, 0xa4,
|
||||
0x52, 0xda, 0xbd, 0x3f, 0x1a, 0x43, 0x32, 0xf2, 0xd0, 0x15, 0x62, 0x30, 0x74, 0x10, 0x43, 0x77,
|
||||
0xce, 0xd0, 0x0b, 0xc1, 0x17, 0xf8, 0x3c, 0xe6, 0x99, 0xfd, 0x11, 0x9e, 0x6b, 0x5d, 0x46, 0x9d,
|
||||
0x06, 0x97, 0x92, 0x90, 0x61, 0xa5, 0x40, 0x22, 0x77, 0x8c, 0xf4, 0x4f, 0x3a, 0x6c, 0xd0, 0x28,
|
||||
0xa0, 0x46, 0xc2, 0x25, 0x4c, 0xc3, 0x13, 0x5e, 0x6f, 0xec, 0xb8, 0x0e, 0xba, 0xe2, 0x90, 0xb8,
|
||||
0xd6, 0x0c, 0x12, 0xc4, 0x68, 0xc9, 0x22, 0xee, 0x72, 0x7e, 0x05, 0x57, 0xe8, 0x72, 0xef, 0x08,
|
||||
0xa6, 0x4e, 0x72, 0x61, 0x35, 0x39, 0x77, 0xda, 0x2f, 0x39, 0x12, 0x9a, 0xc8, 0x04, 0x9d, 0x09,
|
||||
0xfa, 0xc1, 0x31, 0xc6, 0x68, 0xf6, 0x0d, 0x00, 0xc0, 0x86, 0xed, 0x82, 0x5f, 0x06, 0xb5, 0xa8,
|
||||
0x94, 0xe9, 0xc5, 0xb5, 0xf5, 0xc0, 0xd0, 0x11, 0xb1, 0xd9, 0x22, 0x71, 0x4b, 0x0c, 0x8a, 0x12,
|
||||
0x49, 0x60, 0x67, 0xec, 0x4d, 0xe2, 0xe4, 0x48, 0x04, 0x57, 0x69, 0x76, 0xe3, 0x65, 0x24, 0x76,
|
||||
0x86, 0x60, 0xbe, 0x13, 0xc7, 0x66, 0xd1, 0xee, 0xf1, 0x99, 0x4f, 0x13, 0xed, 0x18, 0xde, 0x19,
|
||||
0x91, 0x59, 0xbf, 0x8c, 0xdd, 0x91, 0x23, 0x90, 0xa3, 0x68, 0x66, 0xae, 0x3f, 0x16, 0x09, 0x0e,
|
||||
0x10, 0x99, 0x4e, 0x73, 0x59, 0x41, 0xa5, 0x3c, 0x2d, 0xb8, 0x3a, 0x97, 0x61, 0x7f, 0x87, 0x3d,
|
||||
0xf0, 0xe5, 0xad, 0x88, 0x73, 0x46, 0xb0, 0x98, 0x7f, 0x70, 0x65, 0xf8, 0x63, 0x61, 0x05, 0x01,
|
||||
0x2e, 0x74, 0x7e, 0xdf, 0x87, 0x24, 0xcd, 0xf7, 0x4e, 0xee, 0x68, 0x52, 0xb6, 0x03, 0xf2, 0x9a,
|
||||
0x80, 0x77, 0xdb, 0x5d, 0xd2, 0xf3, 0x2f, 0x18, 0x0f, 0x2f, 0x50, 0xc1, 0xf0, 0x2a, 0xdb, 0x96,
|
||||
0x57, 0x8e, 0x01, 0xfb, 0xfe, 0x19, 0x86, 0x64, 0xf3, 0x64, 0xd3, 0xf0, 0x2a, 0xfb, 0xbd, 0x43,
|
||||
0x3a, 0x33, 0x5e, 0xae, 0xca, 0x29, 0xf1, 0x1e, 0x2d, 0xe8, 0x15, 0x6e, 0x5b, 0xfb, 0xee, 0x64,
|
||||
0x53, 0xe2, 0x1b, 0x99, 0xd1, 0xe6, 0x66, 0xa0, 0xa1, 0xa7, 0x1d, 0x7d, 0xa8, 0x52, 0x33, 0x97,
|
||||
0x89, 0xdc, 0x5c, 0xde, 0x15, 0x36, 0x06, 0x2a, 0x6f, 0xdc, 0x19, 0x80, 0xda, 0x75, 0xcf, 0xbe,
|
||||
0x40, 0x1a, 0x3c, 0xa5, 0x6e, 0x42, 0xe9, 0xba, 0x09, 0x5d, 0x72, 0xf2, 0xe9, 0x0e, 0xbc, 0x51,
|
||||
0xcc, 0xc8, 0x64, 0xb3, 0xa3, 0x9f, 0x40, 0x56, 0xb2, 0x7d, 0xba, 0x46, 0xeb, 0xe8, 0x81, 0xad,
|
||||
0x0a, 0x27, 0xfd, 0xb6, 0x37, 0xeb, 0x24, 0x10, 0x3f, 0x1a, 0x9d, 0x3b, 0xc3, 0xb7, 0x89, 0xae,
|
||||
0x89, 0x47, 0x34, 0x39, 0xe4, 0x18, 0x7f, 0x5a, 0x62, 0x07, 0x3e, 0x3c, 0xc8, 0xb9, 0x9b, 0x68,
|
||||
0x25, 0xdb, 0xc2, 0x6b, 0x18, 0xaf, 0xb1, 0x76, 0x4c, 0xfb, 0xc7, 0x92, 0x1e, 0x2f, 0x43, 0x76,
|
||||
0xe0, 0xfa, 0x89, 0xf6, 0xdf, 0x71, 0xb0, 0xb0, 0x44, 0x16, 0x69, 0x6f, 0xbd, 0xcf, 0xeb, 0xea,
|
||||
0x90, 0x8b, 0xae, 0x24, 0x5c, 0xa3, 0x53, 0xaa, 0x6c, 0xb4, 0xcd, 0x65, 0xd7, 0x3c, 0x53, 0xd5,
|
||||
0x1f, 0xb1, 0x69, 0xce, 0xdb, 0x11, 0x3f, 0xee, 0x6e, 0x99, 0x57, 0x4e, 0x79, 0xaa, 0x0b, 0xfa,
|
||||
0x22, 0xd6, 0x11, 0xb3, 0xc5, 0x85, 0xe5, 0x78, 0xa9, 0xbf, 0xc2, 0x5f, 0xbd, 0x78, 0xa5, 0x40,
|
||||
0xb8, 0x1e, 0xdd, 0x64, 0x15, 0x80, 0x28, 0x15, 0xf9, 0xa1, 0xed, 0xf2, 0x0c, 0x22, 0xed, 0x18,
|
||||
0x6c, 0x60, 0xe5, 0xbf, 0xbc, 0x23, 0x31, 0xf2, 0x96, 0x29, 0xa9, 0x58, 0xb6, 0xcd, 0x02, 0xc8,
|
||||
0x09, 0x6a, 0x1c, 0xdd, 0x0e, 0x43, 0x4f, 0xac, 0x63, 0xe1, 0xe6, 0xea, 0xc1, 0x1f, 0x73, 0x0d,
|
||||
0x67, 0x5a, 0x77, 0x42, 0x81, 0x01, 0x04, 0xf1, 0x2b, 0x7f, 0x5e, 0xb0, 0x5c, 0x69, 0xb8, 0x16,
|
||||
0xa9, 0x80, 0x21, 0x4e, 0xcd, 0xd2, 0x5f, 0x79, 0xe2, 0xa2, 0x9d, 0x5a, 0xe0, 0x70, 0xe1, 0xe3,
|
||||
0x34, 0x84, 0x8c, 0x61, 0x52, 0x87, 0xec, 0x86, 0x37, 0x43, 0x4d, 0xfa, 0x07, 0x2c, 0xb9, 0xf7,
|
||||
0x40, 0xd1, 0xea, 0xe0, 0xad, 0xdf, 0xab, 0x5b, 0x42, 0xb6, 0x77, 0xd8, 0x56, 0x79, 0xfb, 0x0e,
|
||||
0x1d, 0x9e, 0x13, 0x92, 0x07, 0x53, 0xae, 0xb6, 0xed, 0xb0, 0x92, 0x33, 0x44, 0x22, 0xae, 0x1f,
|
||||
0xee, 0x5f, 0x96, 0xbb, 0x6b, 0x9a, 0x54, 0x8f, 0x6f, 0xd2, 0x14, 0xec, 0x25, 0xed, 0xd1, 0x94,
|
||||
0xdd, 0xfe, 0x17, 0x92, 0x26, 0xf9, 0x73, 0x19, 0x11, 0xcf, 0xa0, 0xee, 0xb1, 0xff, 0xcd, 0x03,
|
||||
0x29, 0x6e, 0x82, 0x4e, 0x31, 0xfd, 0x17, 0x25, 0xc1, 0x32, 0xa8, 0xf3, 0x1e, 0xe1, 0x6b, 0xa1,
|
||||
0x65, 0x28, 0xf5, 0x49, 0x62, 0xcd, 0x95, 0x36, 0x1b, 0x29, 0xe6, 0x19, 0xa4, 0x98, 0xe5, 0xce,
|
||||
0x72, 0x51, 0x96, 0x6d, 0x66, 0x59, 0xa5, 0xa2, 0x1f, 0xc1, 0x13, 0x35, 0x29, 0x23, 0x4e, 0x65,
|
||||
0xbd, 0x87, 0xcc, 0x41, 0xc2, 0x94, 0x27, 0x31, 0xbc, 0xdd, 0x51, 0xa8, 0x6e, 0x53, 0xd0, 0x0b,
|
||||
0x55, 0x29, 0xa4, 0xa8, 0x63, 0xdf, 0x87, 0x3c, 0x5f, 0xc7, 0xf2, 0x2f, 0x4a, 0xf2, 0xd5, 0x28,
|
||||
0x25, 0x8a, 0x51, 0xf7, 0x83, 0xb5, 0x58, 0x58, 0xc4, 0xf6, 0xc3, 0x50, 0x96, 0x7e, 0x98, 0x1e,
|
||||
0x88, 0xe4, 0xe7, 0x15, 0x19, 0x7d, 0x80, 0xe4, 0x94, 0x28, 0x51, 0x1c, 0xfa, 0x50, 0xe0, 0xa0,
|
||||
0x37, 0x49, 0xdb, 0x0b, 0x9c, 0x40, 0x65, 0x27, 0xf6, 0x12, 0x61, 0xee, 0xa0, 0x80, 0xbd, 0x1a,
|
||||
0xa2, 0xe0, 0xcf, 0xed, 0x6c, 0x62, 0xc7, 0x7f, 0xc3, 0xac, 0xde, 0x04, 0xc3, 0x88, 0x73, 0x1c,
|
||||
0x4b, 0xc1, 0xbd, 0xdf, 0x14, 0x5c, 0x65, 0x43, 0x72, 0x46, 0xf9, 0xda, 0xfc, 0x80, 0x0a, 0x75,
|
||||
0x0f, 0xa9, 0x5f, 0xe4, 0x20, 0xd3, 0x42, 0xa7, 0xce, 0x42, 0x3f, 0x8a, 0xa6, 0xd6, 0x84, 0xbd,
|
||||
0x26, 0x97, 0xfb, 0xf7, 0x42, 0x77, 0x32, 0x04, 0x04, 0x7f, 0xed, 0x6a, 0x83, 0xb9, 0xfb, 0xf3,
|
||||
0x5d, 0xcc, 0x7d, 0x73, 0xb7, 0xcf, 0xdc, 0xe0, 0xcf, 0xe5, 0x91, 0x45, 0x84, 0x68, 0x65, 0x3b,
|
||||
0xe5, 0xd6, 0x72, 0x59, 0x0c, 0x51, 0x2d, 0xce, 0xd8, 0x7c, 0x8d, 0xb1, 0xdb, 0xf7, 0xc2, 0x54,
|
||||
0x90, 0x9b, 0x09, 0x54, 0xe3, 0x20, 0x3c, 0x3e, 0xb3, 0x44, 0xc9, 0xcf, 0xe5, 0x2f, 0x8b, 0x6d,
|
||||
0x76, 0x4a, 0xee, 0xaf, 0x5e, 0x51, 0xc0, 0x1d, 0x62, 0x84, 0x77, 0x5c, 0x11, 0x12, 0xfc, 0xf7,
|
||||
0xdc, 0x59, 0xed, 0xb6, 0xa5, 0xfb, 0xe1, 0xeb, 0x8a, 0x5e, 0x29, 0x21, 0x84, 0x44, 0xb0, 0xdb,
|
||||
0xb9, 0x79, 0x16, 0xfa, 0xfe, 0x63, 0x59, 0x36, 0xf0, 0xd1, 0x72, 0x62, 0xde, 0xd8, 0x00, 0x4b,
|
||||
0xab, 0xec, 0x39, 0x10, 0xfd, 0x1e, 0x96, 0x7a, 0x4f, 0x12, 0x80, 0xaf, 0x09, 0x4f, 0x21, 0x53,
|
||||
0xa0, 0xca, 0xf6, 0xb9, 0x9d, 0xd1, 0xd2, 0x0b, 0x9d, 0xa8, 0x2c, 0x80, 0x82, 0xdc, 0xf9, 0xdd,
|
||||
0x04, 0xfc, 0x71, 0x1e, 0xa8, 0x92, 0x30, 0xd2, 0xf1, 0xc5, 0xa8, 0x88, 0xa7, 0x43, 0x0b, 0x1c,
|
||||
0xba, 0xcd, 0x72, 0xa6, 0xf3, 0xda, 0x91, 0xca, 0xb3, 0xfb, 0xfc, 0xe1, 0xcc, 0x44, 0x99, 0x9e,
|
||||
0x6c, 0xda, 0xff, 0x20, 0x12, 0x6b, 0x5f, 0xe6, 0xb8, 0xdc, 0x06, 0xcb, 0x8e, 0x0e, 0x96, 0x9e,
|
||||
0x14, 0xa4, 0x5b, 0xd3, 0xe2, 0x15, 0xff, 0xf9, 0xae, 0x64, 0xea, 0x95, 0x03, 0xe7, 0xb9, 0x5c,
|
||||
0xeb, 0x95, 0x03, 0x85, 0x28, 0xe4, 0x57, 0x8e, 0x14, 0xa2, 0x84, 0x2b, 0xe5, 0xa7, 0x0a, 0x79,
|
||||
0xc5, 0x92, 0x4e, 0x0f, 0x84, 0x93, 0x9d, 0x87, 0x7c, 0xa5, 0xde, 0x39, 0xbb, 0x93, 0xf5, 0x0e,
|
||||
0x8c, 0x81, 0x64, 0x1d, 0x4c, 0xeb, 0x11, 0xaa, 0x2e, 0x17, 0x5c, 0x0f, 0x54, 0x0d, 0x3b, 0xa2,
|
||||
0xe8, 0x76, 0x7e, 0x5c, 0xd9, 0x4c, 0x90, 0xcf, 0x86, 0x45, 0x0f, 0x23, 0xc3, 0x1a, 0xac, 0xf8,
|
||||
0xe9, 0xe4, 0x11, 0x97, 0x7a, 0xc2, 0x97, 0x3f, 0x31, 0xeb, 0x1c, 0x41, 0x31, 0xa3, 0x4a, 0x62,
|
||||
0xc4, 0xc3, 0x32, 0xa5, 0xbe, 0xe2, 0x37, 0x38, 0x89, 0xf2, 0x14, 0x5a, 0x01, 0xf6, 0x23, 0x16,
|
||||
0xfe, 0x23, 0x0c, 0x56, 0xf7, 0xa8, 0x77, 0x25, 0x19, 0x62, 0xb9, 0x4f, 0xd6, 0x2a, 0x22, 0x38,
|
||||
0x52, 0xdd, 0xb3, 0x14, 0x09, 0xb8, 0x87, 0x07, 0x7d, 0x37, 0xa0, 0x4b, 0x14, 0x1f, 0x17, 0xbf,
|
||||
0xc4, 0x73, 0x97, 0xae, 0x53, 0x45, 0x3a, 0x86, 0x50, 0x1c, 0x9f, 0xc5, 0x2e, 0x1d, 0x7b, 0x9b,
|
||||
0xa0, 0x13, 0xc7, 0x63, 0x34, 0x52, 0x39, 0xbf, 0x87, 0x02, 0xa2, 0x92, 0x09, 0xfa, 0xfd, 0xed,
|
||||
0xe8, 0xd5, 0x82, 0xc8, 0x9e, 0xf2, 0x6a, 0x10, 0x7f, 0x5b, 0x91, 0xc4, 0x6c, 0x11, 0xb8, 0x79,
|
||||
0xfa, 0x95, 0xf2, 0xdc, 0xb0, 0x41, 0xc9, 0x3f, 0x9f, 0x1b, 0xd2, 0x64, 0x2f, 0x3d, 0xdd, 0x72,
|
||||
0x6f, 0x40, 0xe1, 0xc2, 0x53, 0x80, 0xb2, 0xbc, 0x10, 0xf7, 0x08, 0xfe, 0x4f, 0x36, 0x1f, 0xea,
|
||||
0xb8, 0x9f, 0x92, 0x2b, 0x93, 0xc5, 0x2f, 0x40, 0x26, 0x64, 0xeb, 0xb8, 0x15, 0x83, 0xfb, 0x32,
|
||||
0xf8, 0x13, 0xb0, 0xff, 0x03, 0x4b, 0x74, 0xff, 0x24, 0x12, 0x56, 0x00, 0x00
|
||||
0x3c, 0x30, 0x3a, 0xbc, 0x86, 0x5c, 0x43, 0x11, 0xd6, 0x84, 0xe0, 0xe0, 0x4a, 0x62, 0x5c, 0x1e,
|
||||
0x5c, 0x58, 0x2d, 0x10, 0x56, 0xab, 0x79, 0x80, 0x8f, 0x4e, 0x4e, 0x90, 0x0d, 0x8e, 0xd0, 0xf6,
|
||||
0x39, 0xc2, 0xe2, 0xac, 0x73, 0x02, 0xc6, 0xf1, 0xa6, 0x44, 0x70, 0x32, 0x10, 0xe2, 0xe8, 0xa4,
|
||||
0xe2, 0xe3, 0x28, 0x26, 0xce, 0x0c, 0x70, 0x54, 0xe9, 0xd3, 0x96, 0x75, 0xe6, 0x19, 0xd9, 0xb2,
|
||||
0xcb, 0xa6, 0x0e, 0xbc, 0x80, 0xf7, 0x31, 0xf8, 0x9f, 0x72, 0x39, 0x7c, 0xbc, 0x29, 0xca, 0x41,
|
||||
0x57, 0x8b, 0x24, 0x6d, 0x5a, 0xc2, 0xfa, 0xdb, 0xb8, 0x0d, 0xe9, 0x9e, 0x59, 0xef, 0x1f, 0x1a,
|
||||
0xd1, 0xff, 0x1d, 0x81, 0x4d, 0xcb, 0xf0, 0x18, 0xc7, 0x38, 0xb4, 0xd9, 0xe0, 0x78, 0xda, 0x7a,
|
||||
0x62, 0x6c, 0x65, 0x79, 0x49, 0x82, 0xc7, 0xda, 0xc2, 0x03, 0xe5, 0x40, 0x0b, 0xc5, 0x5b, 0x3e,
|
||||
0x0e, 0xfc, 0xdb, 0xb6, 0xbf, 0xc8, 0x58, 0xbe, 0xf4, 0x1e, 0x21, 0x21, 0x63, 0x13, 0x02, 0xc5,
|
||||
0x34, 0xd6, 0xa8, 0x1d, 0x7a, 0x07, 0xd9, 0x23, 0xf8, 0x9f, 0x09, 0x51, 0x42, 0x3f, 0xb6, 0xf0,
|
||||
0x95, 0x71, 0xa2, 0xff, 0xf7, 0x7f, 0xa9, 0x69, 0x7e, 0x34, 0xd9, 0x8f, 0x6f, 0xc2, 0xbe, 0xa1,
|
||||
0x93, 0xe0, 0x4d, 0xab, 0x0e, 0x5d, 0xa3, 0xab, 0x08, 0xc1, 0xd0, 0xff, 0xb1, 0x64, 0x10, 0x1c,
|
||||
0xb9, 0xef, 0xf4, 0xc3, 0x53, 0xd7, 0x55, 0x68, 0xed, 0x09, 0x56, 0x54, 0x5b, 0x9a, 0x61, 0xe2,
|
||||
0x3d, 0x33, 0x87, 0xba, 0xe4, 0x9e, 0x34, 0x44, 0xf7, 0xb7, 0x31, 0xd7, 0xcd, 0x49, 0x72, 0x57,
|
||||
0x14, 0xbc, 0x56, 0x78, 0x6b, 0x0b, 0x53, 0xd7, 0x1e, 0xb1, 0xa1, 0x06, 0xe8, 0x33, 0x32, 0xc1,
|
||||
0x56, 0x11, 0x3e, 0x33, 0x83, 0x5d, 0x45, 0xb8, 0x5f, 0xfa, 0x2a, 0x29, 0x7b, 0xce, 0xa0, 0x66,
|
||||
0x98, 0xc9, 0xba, 0x05, 0x4b, 0xa0, 0x59, 0x52, 0x02, 0xcd, 0xd4, 0x57, 0x8c, 0x1e, 0x42, 0xab,
|
||||
0xc9, 0xdb, 0x0b, 0xdd, 0x92, 0xc1, 0x49, 0xfd, 0x34, 0x4b, 0xea, 0x27, 0x41, 0x43, 0x71, 0xcd,
|
||||
0x3f, 0x55, 0xe6, 0xa8, 0xa2, 0xc8, 0x79, 0xe6, 0x33, 0x40, 0x82, 0x10, 0x27, 0x35, 0xf1, 0xc5,
|
||||
0xf1, 0x40, 0x2c, 0x41, 0x26, 0x69, 0xdb, 0x77, 0xfd, 0xd0, 0xa4, 0xdf, 0x4d, 0xa7, 0x53, 0xda,
|
||||
0x4d, 0xab, 0xa2, 0x74, 0x60, 0xb3, 0x99, 0x8d, 0x3b, 0x32, 0x72, 0x3d, 0x81, 0x7d, 0x3c, 0x27,
|
||||
0x35, 0xdf, 0x2c, 0xa9, 0xf9, 0x66, 0x49, 0xcd, 0x37, 0x4b, 0x6a, 0xbe, 0x99, 0xec, 0x09, 0x04,
|
||||
0x5b, 0x3d, 0x81, 0x20, 0xd7, 0x13, 0xc0, 0x25, 0xc2, 0xce, 0x67, 0x37, 0xd7, 0x1c, 0x38, 0x0d,
|
||||
0x43, 0x6b, 0x55, 0x73, 0x22, 0xfe, 0x37, 0x29, 0xea, 0x55, 0x5c, 0xe4, 0x07, 0x58, 0xe4, 0x87,
|
||||
0x9e, 0x6c, 0x1e, 0xc8, 0x95, 0x7e, 0x80, 0x95, 0x5e, 0xd5, 0x82, 0x65, 0x34, 0x97, 0xa0, 0x9f,
|
||||
0x1e, 0x3e, 0xab, 0xb2, 0xe4, 0xd5, 0xa1, 0xe0, 0x0d, 0xf2, 0x05, 0x2f, 0x50, 0x71, 0x0e, 0xcc,
|
||||
0xaf, 0x82, 0xee, 0x14, 0x38, 0x79, 0xad, 0xf0, 0x9d, 0x26, 0x42, 0x98, 0x26, 0x42, 0x98, 0x26,
|
||||
0x42, 0x98, 0x26, 0x42, 0x98, 0x26, 0x42, 0x98, 0x26, 0x42, 0x98, 0x26, 0x42, 0x98, 0xe6, 0x0a,
|
||||
0xdf, 0x69, 0x69, 0xe1, 0x7b, 0x55, 0xca, 0xc4, 0x5b, 0x0b, 0xdf, 0xab, 0x7d, 0x85, 0xaf, 0x90,
|
||||
0xfe, 0xd7, 0x2d, 0xe9, 0x67, 0x4f, 0xa4, 0xdc, 0x52, 0x3a, 0xd9, 0x3b, 0xde, 0x7b, 0x59, 0xaf,
|
||||
0x57, 0xa2, 0x45, 0xc3, 0xcc, 0x3e, 0xcb, 0xb5, 0x68, 0x82, 0x62, 0x8b, 0x66, 0xb0, 0xad, 0x6c,
|
||||
0x10, 0x6a, 0x69, 0x67, 0xeb, 0xf1, 0x0e, 0x04, 0xfd, 0x66, 0x73, 0x40, 0xfd, 0xd0, 0xf2, 0x66,
|
||||
0xe8, 0x04, 0xb8, 0x9e, 0xae, 0xd7, 0xcc, 0x8d, 0x18, 0x17, 0xd0, 0xe5, 0xae, 0x61, 0xdd, 0x7c,
|
||||
0x2f, 0x1d, 0xca, 0xb5, 0xac, 0x93, 0xfe, 0xc9, 0xff, 0xfc, 0xf2, 0x22, 0xc2, 0xba, 0x1b, 0x71,
|
||||
0xdf, 0x26, 0xe2, 0xcf, 0x42, 0xc6, 0x1f, 0xf9, 0x10, 0x5c, 0x10, 0x16, 0x41, 0x90, 0x14, 0xe4,
|
||||
0x31, 0x69, 0x97, 0x10, 0xce, 0x14, 0x2b, 0xa3, 0xba, 0x85, 0x47, 0x55, 0xab, 0x97, 0xfd, 0x05,
|
||||
0x40, 0x2d, 0x4c, 0xab, 0x7a, 0xa9, 0x6a, 0x97, 0x7d, 0x1b, 0xbe, 0xd8, 0x26, 0x7c, 0xfc, 0xf3,
|
||||
0x66, 0xdc, 0xc3, 0xc8, 0xa3, 0x3c, 0x56, 0x61, 0x34, 0xc8, 0x5b, 0xd0, 0xc2, 0xb8, 0x88, 0xed,
|
||||
0xea, 0x33, 0xb9, 0x0f, 0xb2, 0x90, 0x8e, 0x7a, 0xeb, 0xb9, 0x69, 0x3e, 0x0e, 0x28, 0xc8, 0x4c,
|
||||
0xa1, 0xd5, 0xc7, 0x2a, 0x25, 0xc1, 0x7c, 0x15, 0x39, 0xb6, 0xe5, 0x26, 0x9e, 0x7d, 0xa1, 0x17,
|
||||
0xea, 0xa0, 0x58, 0x13, 0xbb, 0x10, 0x71, 0x1d, 0x93, 0xff, 0xbf, 0x18, 0xba, 0xac, 0xa5, 0x27,
|
||||
0x63, 0x2b, 0x0b, 0xa7, 0x63, 0xcb, 0x7e, 0x98, 0x85, 0xfe, 0xd2, 0x9b, 0x98, 0x5f, 0xd0, 0x2d,
|
||||
0x5b, 0xe1, 0xd1, 0x2c, 0xb4, 0x26, 0x0e, 0xf6, 0xde, 0xdf, 0xe9, 0x13, 0x36, 0xd3, 0xc8, 0xf7,
|
||||
0xcf, 0xa2, 0xa9, 0x70, 0xac, 0x0f, 0xc4, 0x87, 0x77, 0x90, 0xb6, 0xf3, 0x15, 0xcf, 0xad, 0xa2,
|
||||
0x6d, 0xdb, 0x74, 0x4d, 0xf4, 0x04, 0x78, 0xfd, 0x83, 0x46, 0xbe, 0x6b, 0xb5, 0x5a, 0xd9, 0x77,
|
||||
0x02, 0xf4, 0x7f, 0x50, 0xbf, 0xc8, 0x15, 0x61, 0x93, 0x5d, 0x35, 0x82, 0xdd, 0xbf, 0xb6, 0xe2,
|
||||
0x39, 0xba, 0x27, 0x85, 0x3b, 0x55, 0xed, 0x44, 0xd7, 0xd5, 0x97, 0x17, 0x41, 0xf9, 0x44, 0x2f,
|
||||
0x8f, 0x91, 0x25, 0xf8, 0x84, 0x0a, 0x26, 0xd8, 0xac, 0x6f, 0x25, 0xd8, 0x0c, 0x7d, 0x73, 0x22,
|
||||
0x02, 0xdb, 0x13, 0x94, 0xa1, 0x91, 0xef, 0x15, 0x84, 0x99, 0xd1, 0x3f, 0xd1, 0x7f, 0xc0, 0x56,
|
||||
0x3c, 0xa0, 0xab, 0x61, 0x4b, 0x85, 0x2c, 0xd8, 0xc2, 0x0f, 0x57, 0xb4, 0x9a, 0xb5, 0x5e, 0x06,
|
||||
0x5f, 0x88, 0xd2, 0x1b, 0xf7, 0x2f, 0xee, 0xee, 0x6e, 0xee, 0x3a, 0xe4, 0x57, 0xde, 0x42, 0xf1,
|
||||
0x21, 0x26, 0x83, 0x30, 0x70, 0x25, 0xd6, 0xc3, 0x83, 0x5e, 0x7d, 0xdc, 0x57, 0xbf, 0x40, 0x22,
|
||||
0xae, 0x76, 0x00, 0x9f, 0x2e, 0x5a, 0x33, 0x01, 0x40, 0xc8, 0x20, 0xce, 0x83, 0xe2, 0xdc, 0xe4,
|
||||
0xbc, 0xdb, 0xcc, 0x71, 0x15, 0x05, 0xd0, 0x56, 0x1f, 0xff, 0x22, 0xca, 0x1d, 0xb5, 0xde, 0x86,
|
||||
0x59, 0xd4, 0x1b, 0xdd, 0xb9, 0x39, 0xef, 0xb7, 0x07, 0x19, 0xd4, 0x5c, 0xed, 0xcc, 0xbb, 0x96,
|
||||
0x29, 0xf3, 0xfb, 0x21, 0xcf, 0xe8, 0x36, 0x0b, 0x6d, 0x6d, 0x6c, 0xe6, 0x6b, 0xac, 0xac, 0x9f,
|
||||
0x31, 0xef, 0x19, 0x35, 0xbd, 0x71, 0x78, 0x78, 0x30, 0x84, 0x7f, 0xe3, 0x01, 0xa0, 0xb9, 0x18,
|
||||
0xdd, 0x92, 0xf6, 0x6f, 0xd8, 0x87, 0x24, 0x4f, 0x4e, 0x3c, 0x27, 0xc6, 0x29, 0xf9, 0x75, 0x34,
|
||||
0x24, 0xd1, 0x32, 0x08, 0xdc, 0x15, 0xed, 0x28, 0x56, 0xd5, 0x1c, 0x0e, 0xa8, 0xd1, 0xf8, 0x8d,
|
||||
0xd0, 0xce, 0x78, 0x40, 0x3f, 0x8e, 0x1a, 0x27, 0x46, 0x9b, 0x88, 0xef, 0x14, 0x06, 0x52, 0x0d,
|
||||
0x20, 0xe6, 0xf8, 0x3f, 0x7a, 0x2a, 0x47, 0x61, 0x87, 0xcd, 0x83, 0x0c, 0x02, 0x92, 0x92, 0xd8,
|
||||
0xe7, 0xd3, 0xa6, 0xa2, 0x5c, 0x1b, 0xed, 0x9e, 0xac, 0x21, 0x66, 0xab, 0x5d, 0x98, 0x54, 0xe1,
|
||||
0xed, 0x2b, 0x3f, 0x8a, 0x09, 0x9b, 0x4e, 0x01, 0x4d, 0xa4, 0x91, 0xff, 0xa4, 0xdd, 0x8b, 0xaa,
|
||||
0x39, 0x32, 0x47, 0x05, 0x49, 0x8c, 0xd4, 0xce, 0x48, 0xbb, 0xe0, 0x84, 0x9d, 0x88, 0x30, 0xcf,
|
||||
0x5f, 0xce, 0xe6, 0x6a, 0x6f, 0x1c, 0xf6, 0xb3, 0x26, 0x51, 0x61, 0x79, 0xad, 0x42, 0xef, 0x28,
|
||||
0xb7, 0xec, 0x68, 0x6f, 0x17, 0xe2, 0xe5, 0x57, 0xa1, 0x13, 0x45, 0x75, 0x3d, 0x91, 0x92, 0xbc,
|
||||
0xbc, 0x97, 0xd5, 0x2a, 0x4d, 0x34, 0x33, 0xb7, 0xd1, 0x65, 0x45, 0xf1, 0x85, 0x37, 0x91, 0x2d,
|
||||
0x3f, 0xd6, 0x33, 0x92, 0x36, 0x9e, 0xde, 0x7d, 0x7c, 0xcd, 0x7f, 0x8c, 0x40, 0xb1, 0xd8, 0x11,
|
||||
0x44, 0x8f, 0xcc, 0x87, 0x54, 0x5f, 0xef, 0x3c, 0x6c, 0x0e, 0xe9, 0x8a, 0x32, 0xfd, 0x75, 0x5f,
|
||||
0xb5, 0x35, 0x50, 0x72, 0xea, 0xf1, 0x22, 0xc8, 0x13, 0x45, 0x10, 0xd4, 0xe2, 0xaa, 0xe6, 0x44,
|
||||
0xbf, 0x58, 0xbf, 0x28, 0x8f, 0xea, 0x40, 0xef, 0x3c, 0x66, 0x53, 0x85, 0xd2, 0x15, 0x17, 0x35,
|
||||
0xdd, 0xd4, 0x13, 0x3b, 0x1a, 0x1b, 0xe4, 0xce, 0x92, 0x8d, 0x1d, 0x48, 0xef, 0x46, 0xf7, 0x90,
|
||||
0xdc, 0x39, 0x66, 0x9c, 0x26, 0x72, 0x53, 0xe5, 0x40, 0x81, 0x0a, 0x04, 0xa2, 0x95, 0xd3, 0xc7,
|
||||
0xb4, 0x6a, 0xf8, 0xf2, 0x72, 0x24, 0xbe, 0x83, 0x32, 0x3b, 0x6a, 0xd2, 0xc3, 0x16, 0x0e, 0x0f,
|
||||
0xe6, 0xca, 0x23, 0x27, 0x02, 0x24, 0x55, 0xf9, 0x97, 0xde, 0xc4, 0x79, 0x24, 0x7c, 0xf3, 0xc8,
|
||||
0xe4, 0xf8, 0xfb, 0xbf, 0x7b, 0xbd, 0x39, 0x94, 0xbb, 0xb8, 0x6e, 0x72, 0x8f, 0xb9, 0xd3, 0x38,
|
||||
0xd6, 0x83, 0x6f, 0xf8, 0xe6, 0xfb, 0x67, 0xa7, 0x6a, 0xac, 0x3b, 0x00, 0x22, 0xda, 0x02, 0x44,
|
||||
0xec, 0x1e, 0x5f, 0xdd, 0xc3, 0x8b, 0x35, 0x25, 0x50, 0xba, 0xcd, 0xd1, 0x33, 0x98, 0xf4, 0xd7,
|
||||
0x4b, 0x25, 0x0e, 0x41, 0x22, 0x1c, 0x9d, 0x1f, 0xf0, 0xd9, 0xca, 0xc2, 0xb2, 0xd1, 0xa0, 0x44,
|
||||
0x8c, 0x66, 0x93, 0x3e, 0xb7, 0x82, 0x6f, 0xbd, 0xba, 0x00, 0xd9, 0x06, 0x6e, 0xea, 0xb4, 0x3f,
|
||||
0xfa, 0xdb, 0xf1, 0x89, 0xd1, 0x20, 0x77, 0x1f, 0x86, 0x1f, 0xf7, 0x00, 0x1a, 0xb4, 0x7f, 0x7f,
|
||||
0x6d, 0x9c, 0x18, 0xad, 0xdd, 0x30, 0x8d, 0x16, 0x85, 0x7a, 0x51, 0x7f, 0xf8, 0xf9, 0x3f, 0xf6,
|
||||
0xc0, 0xb4, 0x05, 0x9e, 0xc6, 0xbb, 0xdd, 0x30, 0x6d, 0x60, 0x0a, 0x19, 0xd7, 0x8d, 0x3d, 0x30,
|
||||
0xc0, 0xcf, 0xe9, 0xed, 0xa9, 0xa1, 0x37, 0xf6, 0xc0, 0x34, 0x68, 0xff, 0xea, 0xf6, 0xfc, 0xe4,
|
||||
0x44, 0x3f, 0xde, 0x03, 0xd4, 0xe2, 0x40, 0xc7, 0x27, 0x7a, 0x73, 0x0f, 0x50, 0x93, 0xf6, 0x6f,
|
||||
0xdf, 0x9d, 0x18, 0x7b, 0x40, 0x5a, 0xc0, 0xf4, 0x8d, 0x57, 0xbf, 0x99, 0x4e, 0xf7, 0xc0, 0x00,
|
||||
0xd3, 0xb7, 0x1f, 0xaf, 0xc9, 0xc7, 0xb9, 0x13, 0xb3, 0x3d, 0x60, 0x0d, 0x01, 0x76, 0x76, 0x76,
|
||||
0xbf, 0x07, 0xa8, 0x29, 0x80, 0x60, 0xd9, 0xf6, 0x00, 0xb5, 0x52, 0xa0, 0x3d, 0x6b, 0xdb, 0x6a,
|
||||
0xa7, 0x50, 0xd5, 0x22, 0xcd, 0xdf, 0xbf, 0x35, 0xed, 0x83, 0xa3, 0xa3, 0x0d, 0xf0, 0xe3, 0x0c,
|
||||
0xfc, 0x3c, 0x07, 0x7f, 0x74, 0x04, 0xe0, 0x6c, 0x0b, 0xfb, 0x09, 0x08, 0xe6, 0xfc, 0xfc, 0x16,
|
||||
0xc1, 0x89, 0xe2, 0xb1, 0xf8, 0xc9, 0x0f, 0x1f, 0xd4, 0xd7, 0x68, 0x9c, 0x80, 0xa4, 0x2e, 0x8c,
|
||||
0x5a, 0xd3, 0x28, 0x1f, 0x96, 0x90, 0x2a, 0x1f, 0x0b, 0xe2, 0x3b, 0x0d, 0xe3, 0x5f, 0x58, 0xbc,
|
||||
0x7f, 0xf0, 0x26, 0x9f, 0x27, 0x29, 0x9f, 0x1f, 0x4b, 0x19, 0xed, 0xd5, 0x85, 0x59, 0xf5, 0xd1,
|
||||
0x73, 0xc3, 0x57, 0x34, 0x6c, 0x67, 0x62, 0x52, 0xdb, 0x17, 0xd6, 0x29, 0x4d, 0x5a, 0xfa, 0xe2,
|
||||
0x8e, 0xcc, 0x0c, 0xfa, 0x67, 0x18, 0xfa, 0xc9, 0x4d, 0x38, 0x61, 0xe1, 0x96, 0x61, 0x9f, 0xdd,
|
||||
0xf0, 0xa1, 0xdb, 0x4b, 0x02, 0x32, 0xfb, 0x70, 0xb7, 0x67, 0x61, 0x41, 0x3c, 0x7b, 0x17, 0x1e,
|
||||
0x44, 0x30, 0xbc, 0xfb, 0xb0, 0xc7, 0x9c, 0x61, 0xfc, 0x70, 0xcf, 0x7b, 0xd0, 0x9b, 0xe1, 0x87,
|
||||
0xbb, 0x3d, 0x06, 0x01, 0xfc, 0x0d, 0xef, 0x4a, 0x85, 0x53, 0x07, 0xb9, 0xe4, 0xc5, 0x33, 0x71,
|
||||
0x66, 0x38, 0xc9, 0xa7, 0x2d, 0x01, 0xf1, 0xb8, 0xd4, 0x1f, 0x3d, 0x59, 0x41, 0x87, 0x14, 0xc5,
|
||||
0xf2, 0x51, 0x8a, 0x65, 0x5b, 0x28, 0xbf, 0xc0, 0x98, 0x94, 0xea, 0xb6, 0x4c, 0x3e, 0x92, 0x43,
|
||||
0x32, 0xdc, 0xf5, 0xbe, 0x21, 0xde, 0x7f, 0xd8, 0xf5, 0xbe, 0x29, 0xde, 0x67, 0xb3, 0x2a, 0x9d,
|
||||
0x13, 0xfe, 0x89, 0x02, 0xcb, 0xe3, 0x73, 0x0b, 0xa2, 0x89, 0xe0, 0x54, 0xb4, 0x27, 0x60, 0x00,
|
||||
0xbc, 0xe9, 0x93, 0x9e, 0xd8, 0x1f, 0xc5, 0xb3, 0x1f, 0x26, 0xf5, 0x96, 0x8b, 0x31, 0x0b, 0x69,
|
||||
0xe2, 0xca, 0x47, 0x42, 0x59, 0x70, 0xb4, 0x1b, 0x89, 0xcf, 0x32, 0x3a, 0xb8, 0x44, 0x54, 0x11,
|
||||
0x94, 0x60, 0x35, 0x0c, 0xb3, 0xc5, 0xac, 0x0e, 0x4d, 0xe1, 0x9d, 0x41, 0x13, 0x1e, 0xbf, 0x7f,
|
||||
0x4e, 0xc2, 0xb7, 0xa3, 0xf2, 0x80, 0xc0, 0x29, 0x99, 0x34, 0x5f, 0x7f, 0x20, 0xd2, 0xcf, 0x26,
|
||||
0x86, 0x87, 0x2e, 0xee, 0x1a, 0x74, 0x29, 0x49, 0x1a, 0x90, 0xa4, 0xde, 0x3f, 0xf4, 0xc6, 0x51,
|
||||
0xd0, 0xdd, 0x5e, 0x1e, 0x7b, 0xa7, 0xfe, 0x5e, 0xf1, 0x50, 0xd8, 0xd9, 0x3b, 0xa9, 0xb3, 0xe2,
|
||||
0x44, 0xe4, 0x0c, 0x0c, 0x39, 0x03, 0x9e, 0x68, 0xde, 0x0e, 0xd7, 0x34, 0x5b, 0xa9, 0x8c, 0xa5,
|
||||
0x74, 0x0a, 0xc8, 0x2b, 0x05, 0x0e, 0x85, 0xb0, 0xa5, 0x8d, 0xd5, 0xb7, 0x24, 0xae, 0x4b, 0x89,
|
||||
0xf3, 0xee, 0xf1, 0x5b, 0x04, 0xae, 0x0b, 0xde, 0x0a, 0x32, 0x6d, 0x36, 0x73, 0x1c, 0x48, 0xae,
|
||||
0xa3, 0x8d, 0xf8, 0xaa, 0xd2, 0x7a, 0x91, 0xb2, 0x21, 0x29, 0x4b, 0xa2, 0xfb, 0x68, 0x1a, 0x3b,
|
||||
0x68, 0xbe, 0x95, 0x54, 0xe3, 0xed, 0xa4, 0x1a, 0xff, 0x22, 0xa9, 0xe6, 0xdb, 0x49, 0x35, 0xff,
|
||||
0x45, 0x52, 0xad, 0xb7, 0x93, 0x6a, 0xfd, 0x53, 0xa4, 0x36, 0x74, 0x3a, 0xdc, 0xa9, 0xd3, 0xa8,
|
||||
0x5d, 0x19, 0x63, 0x90, 0xd7, 0x0b, 0xc6, 0x92, 0x5e, 0xa5, 0x64, 0x70, 0x43, 0xe7, 0x79, 0x27,
|
||||
0x7e, 0xec, 0x7f, 0x4b, 0x98, 0x3c, 0xfb, 0x2d, 0x99, 0x4e, 0xb9, 0xc7, 0x8b, 0xf6, 0x92, 0x1f,
|
||||
0x3d, 0x38, 0x01, 0x99, 0x3a, 0x21, 0x54, 0x0f, 0x98, 0xa3, 0xee, 0xb5, 0xaf, 0xd1, 0x55, 0x89,
|
||||
0x38, 0xa0, 0x6e, 0xa2, 0x99, 0x67, 0xdc, 0xb0, 0xa3, 0x9d, 0x4c, 0x4d, 0xf7, 0x32, 0x05, 0xd9,
|
||||
0x0b, 0xb9, 0x63, 0xd3, 0x90, 0x45, 0x99, 0xc1, 0x73, 0x09, 0x4d, 0x05, 0x03, 0xe5, 0x82, 0xb8,
|
||||
0x7b, 0xbf, 0x5f, 0x10, 0xd6, 0x5e, 0x9a, 0xa7, 0xcb, 0xd8, 0x3f, 0xb2, 0x2d, 0xd7, 0x5e, 0xba,
|
||||
0x56, 0xcc, 0xc8, 0x13, 0xe6, 0x46, 0x78, 0x8c, 0x13, 0xaa, 0x1e, 0x97, 0x4c, 0x43, 0x7f, 0x81,
|
||||
0x11, 0xb9, 0x23, 0x56, 0x2c, 0x1f, 0x24, 0x4e, 0x3f, 0x96, 0x05, 0x09, 0x7d, 0x5f, 0x88, 0x30,
|
||||
0xfa, 0xc3, 0xd0, 0x99, 0xcd, 0x63, 0x16, 0xee, 0x00, 0x68, 0xf4, 0x4f, 0x6d, 0x1b, 0x0f, 0xb4,
|
||||
0xed, 0xc2, 0xd0, 0xec, 0x9f, 0x2f, 0x2d, 0x77, 0x3b, 0x42, 0x08, 0xb7, 0x9a, 0x0a, 0x80, 0xff,
|
||||
0xfd, 0xd2, 0xb5, 0xa0, 0x76, 0x8b, 0x58, 0x18, 0x9f, 0x4e, 0xbe, 0x5a, 0x36, 0x54, 0x1b, 0x58,
|
||||
0xc4, 0x29, 0x74, 0xcc, 0xa0, 0x6e, 0x64, 0xcc, 0x9b, 0x50, 0xcd, 0x57, 0xd7, 0xb2, 0x9c, 0x50,
|
||||
0xe2, 0x4f, 0x47, 0x47, 0xce, 0xe7, 0x5a, 0x08, 0xf5, 0xfb, 0x23, 0x53, 0x54, 0x0d, 0xbe, 0xc9,
|
||||
0x86, 0x51, 0x75, 0xab, 0xcc, 0x73, 0x7a, 0x58, 0x8a, 0x1c, 0x19, 0xe5, 0xed, 0x87, 0xa3, 0x6d,
|
||||
0xf8, 0xfe, 0x76, 0xa7, 0xc2, 0x7b, 0x79, 0xe1, 0x7b, 0xca, 0x85, 0x6a, 0xe9, 0xec, 0xe6, 0x5a,
|
||||
0x01, 0x19, 0x42, 0xb9, 0xc4, 0xb7, 0x50, 0x45, 0x11, 0xe3, 0xec, 0xa9, 0x98, 0x6c, 0x7f, 0xf1,
|
||||
0x07, 0x3c, 0x0c, 0x57, 0x40, 0x33, 0x5f, 0x33, 0x41, 0xb5, 0x84, 0xcd, 0x39, 0x59, 0x1e, 0x15,
|
||||
0x8a, 0xa0, 0x6c, 0xc8, 0x5b, 0x4a, 0x21, 0x22, 0x22, 0xeb, 0x3e, 0xeb, 0xf8, 0x7b, 0x2e, 0xa4,
|
||||
0x7e, 0x7b, 0x53, 0x48, 0x3d, 0x6e, 0xb7, 0x9b, 0xed, 0x5c, 0x4c, 0x65, 0xeb, 0x0d, 0xfb, 0xc9,
|
||||
0xc5, 0x4c, 0x93, 0xd2, 0x34, 0x68, 0xbe, 0x21, 0x14, 0xfe, 0xfd, 0x2c, 0xc7, 0x8c, 0xbd, 0x37,
|
||||
0x2c, 0x6e, 0x72, 0xe1, 0xad, 0x0b, 0x54, 0x37, 0x2d, 0x5a, 0xda, 0xd5, 0x9f, 0xca, 0x32, 0x39,
|
||||
0x17, 0x32, 0x3d, 0x95, 0xfc, 0xfd, 0xff, 0xcb, 0x38, 0x13, 0x7b, 0xe3, 0x2e, 0x42, 0x5a, 0x9e,
|
||||
0xdc, 0x9f, 0x14, 0x9a, 0xe6, 0xb0, 0x88, 0xb7, 0x51, 0xf6, 0x9a, 0xa2, 0x25, 0xad, 0xed, 0x9b,
|
||||
0x4f, 0xab, 0x4e, 0xd2, 0xb3, 0x8d, 0xb5, 0x71, 0xec, 0xa1, 0x51, 0x80, 0x2e, 0xca, 0x33, 0x18,
|
||||
0x99, 0xbd, 0x80, 0xa9, 0xe2, 0xab, 0x1d, 0x87, 0x35, 0xcb, 0x8d, 0x04, 0x2c, 0x2b, 0x3d, 0x03,
|
||||
0xa7, 0x1f, 0x98, 0xb8, 0xd9, 0xa6, 0xb0, 0x4f, 0xde, 0x91, 0x91, 0xb3, 0x7c, 0x49, 0x12, 0x1e,
|
||||
0x0a, 0x92, 0x6a, 0x9e, 0x64, 0xc4, 0x62, 0x6e, 0xa4, 0xea, 0x33, 0x3a, 0x8d, 0x8d, 0x13, 0xdb,
|
||||
0x4c, 0x6c, 0x3d, 0xe0, 0x89, 0x10, 0x86, 0x5d, 0xc1, 0x37, 0xb1, 0xa4, 0xb2, 0x94, 0x74, 0x57,
|
||||
0x92, 0x2e, 0x9c, 0x64, 0x15, 0x8f, 0x80, 0x60, 0x2a, 0x53, 0x70, 0x14, 0xdb, 0x47, 0x9a, 0x7a,
|
||||
0x45, 0x5e, 0xca, 0x5d, 0x13, 0x8e, 0x06, 0x62, 0xdb, 0xa3, 0xb7, 0x1d, 0x54, 0xc1, 0x2f, 0x0d,
|
||||
0x63, 0x4f, 0x1c, 0xa5, 0x4d, 0x3c, 0x12, 0xc7, 0x06, 0xac, 0x45, 0xf9, 0xfe, 0x98, 0x66, 0x99,
|
||||
0xb8, 0x03, 0x52, 0x1d, 0xf1, 0x6d, 0x8c, 0x1a, 0xc6, 0x8e, 0xb3, 0xb9, 0x15, 0x9e, 0xf9, 0x13,
|
||||
0xa6, 0x60, 0xa3, 0x4b, 0x1f, 0xb4, 0x4e, 0x3a, 0xed, 0xb6, 0x5a, 0x05, 0x39, 0x39, 0x55, 0xf3,
|
||||
0xcb, 0x70, 0x19, 0xc7, 0x3e, 0x3f, 0x55, 0xb7, 0x16, 0x87, 0x11, 0xca, 0x0d, 0x9b, 0x1b, 0xed,
|
||||
0x51, 0x62, 0xb5, 0x50, 0xe7, 0x4b, 0x53, 0xfa, 0xfe, 0xd9, 0x5a, 0x6f, 0xe5, 0x21, 0x89, 0xb1,
|
||||
0x7f, 0x8b, 0x8a, 0x96, 0xdd, 0xff, 0xa2, 0x21, 0x49, 0x19, 0x27, 0x0a, 0x81, 0xec, 0xfb, 0x67,
|
||||
0x3a, 0xbc, 0x78, 0x13, 0xd7, 0x29, 0x9a, 0x2d, 0xdb, 0x85, 0x49, 0xe8, 0xa6, 0x19, 0x0f, 0x68,
|
||||
0xd2, 0xf9, 0xc1, 0x73, 0x15, 0xeb, 0xfe, 0xb9, 0xdc, 0x64, 0x48, 0xcd, 0xa6, 0x74, 0x78, 0x03,
|
||||
0x87, 0x37, 0x4a, 0x86, 0xdf, 0x2e, 0xa3, 0xf9, 0x98, 0x0b, 0x69, 0x3f, 0x82, 0x26, 0x22, 0x68,
|
||||
0xee, 0x40, 0x40, 0x1c, 0xb9, 0x27, 0xbc, 0x1f, 0x47, 0x0b, 0x71, 0xb4, 0x4a, 0x70, 0x8c, 0xf8,
|
||||
0x09, 0xb4, 0xfd, 0x83, 0xdb, 0x38, 0xb8, 0x5d, 0xc6, 0xc0, 0xe5, 0x1d, 0x89, 0x98, 0x17, 0xf9,
|
||||
0xe1, 0x7e, 0x04, 0xc7, 0x88, 0xe0, 0xb8, 0x04, 0xc1, 0xbd, 0xbf, 0x7c, 0x8d, 0xf8, 0x4f, 0x38,
|
||||
0xf6, 0xa7, 0x92, 0xb1, 0xa7, 0x9e, 0xe5, 0xfa, 0xb3, 0xfd, 0x83, 0x4f, 0x70, 0xf0, 0xc9, 0xce,
|
||||
0xc1, 0x3b, 0x84, 0x47, 0x53, 0xe7, 0x47, 0x05, 0x52, 0x9e, 0xcb, 0xca, 0xd0, 0x00, 0x09, 0x0c,
|
||||
0xcc, 0xb7, 0x43, 0x02, 0xdf, 0xf1, 0x20, 0xd5, 0xe9, 0x72, 0x1d, 0xe5, 0x47, 0x3e, 0x28, 0xde,
|
||||
0x8b, 0xf8, 0x11, 0xf5, 0xf6, 0x47, 0x35, 0x89, 0x6a, 0x87, 0xdf, 0x7d, 0x6b, 0xfc, 0x64, 0xb4,
|
||||
0xbb, 0x49, 0x52, 0x0e, 0x4e, 0x54, 0x6e, 0x8b, 0x6c, 0x9a, 0x57, 0xfe, 0xa0, 0x7a, 0x3c, 0x73,
|
||||
0x47, 0x0e, 0x3a, 0x05, 0xa5, 0x70, 0xa7, 0x84, 0xa9, 0x2f, 0x2f, 0x4a, 0xf1, 0x56, 0xc9, 0xe6,
|
||||
0xd1, 0xb5, 0xf4, 0x86, 0xc2, 0x33, 0xba, 0x2a, 0xe1, 0x3a, 0x0f, 0x0c, 0xcc, 0x38, 0xba, 0x10,
|
||||
0xe0, 0xf6, 0xb7, 0x66, 0x13, 0xcf, 0xe9, 0xe1, 0xfe, 0xfa, 0xf6, 0x16, 0x19, 0x77, 0x99, 0xea,
|
||||
0x9f, 0xe8, 0x4b, 0x7b, 0xc5, 0xf6, 0xf2, 0x41, 0xc9, 0xb6, 0x9b, 0x97, 0xe0, 0x43, 0x47, 0x8d,
|
||||
0x47, 0x1e, 0xf3, 0x95, 0xb6, 0xf7, 0x19, 0xdb, 0xca, 0x72, 0xdf, 0x2c, 0xd2, 0x29, 0x00, 0xe9,
|
||||
0xdb, 0x48, 0x70, 0x1f, 0x6c, 0x37, 0x0e, 0x9d, 0xe3, 0x10, 0x12, 0x8f, 0x9c, 0xdc, 0x99, 0x48,
|
||||
0xa6, 0x25, 0x42, 0xce, 0x84, 0xb7, 0x0c, 0xf0, 0x5a, 0xc6, 0x7b, 0xc7, 0xc5, 0x7b, 0x2c, 0xf2,
|
||||
0xb4, 0x9b, 0xc7, 0x9e, 0xc8, 0xdf, 0xaf, 0xaf, 0x7e, 0x8e, 0xe3, 0xe0, 0x0e, 0xb2, 0x07, 0x16,
|
||||
0xc5, 0x5d, 0x6f, 0xf7, 0x5d, 0x91, 0xdc, 0xfd, 0x86, 0xec, 0xf6, 0x45, 0x3c, 0x77, 0xf0, 0x94,
|
||||
0x52, 0x14, 0xf8, 0x10, 0x23, 0xef, 0xd9, 0xb7, 0x58, 0xe3, 0x4f, 0x80, 0xcd, 0x78, 0x19, 0xe1,
|
||||
0x71, 0x0c, 0x98, 0xa4, 0x0a, 0xb1, 0x6b, 0xf7, 0x3d, 0x92, 0x0c, 0x2f, 0xcb, 0x23, 0xc6, 0x93,
|
||||
0xc1, 0x96, 0xfd, 0xa0, 0x1d, 0x24, 0x08, 0xc4, 0x35, 0x9f, 0xdb, 0x1b, 0x58, 0x4d, 0x8d, 0xd6,
|
||||
0xc5, 0x74, 0xe4, 0x9e, 0x4b, 0xcc, 0x67, 0xf2, 0xde, 0x0f, 0x17, 0x78, 0xc2, 0x2c, 0x3d, 0xa1,
|
||||
0x28, 0xef, 0xc1, 0x28, 0x14, 0xcf, 0x25, 0xcb, 0x83, 0xb2, 0xfc, 0x88, 0x32, 0x5e, 0x4c, 0x89,
|
||||
0x40, 0x7c, 0x78, 0x37, 0xc5, 0xab, 0x45, 0x08, 0x13, 0xab, 0x5a, 0xc9, 0x11, 0xe6, 0x83, 0x8d,
|
||||
0x5b, 0x3e, 0x67, 0xd3, 0x59, 0x2a, 0x3d, 0x2d, 0xee, 0xd2, 0xe4, 0x25, 0x05, 0x2b, 0x04, 0xc7,
|
||||
0x0f, 0x71, 0x53, 0xde, 0x49, 0x42, 0x39, 0xdf, 0x31, 0x0b, 0x52, 0xaa, 0x01, 0xcc, 0x84, 0xd3,
|
||||
0x1b, 0xb0, 0x94, 0xee, 0x40, 0xc1, 0x58, 0x9e, 0x72, 0xa1, 0x48, 0xfe, 0xd3, 0x31, 0x78, 0xd2,
|
||||
0x0a, 0xc9, 0x99, 0x79, 0xd1, 0x60, 0x68, 0xc6, 0x61, 0xa0, 0x00, 0xa0, 0x94, 0x28, 0xf3, 0xa5,
|
||||
0x1b, 0xcb, 0xe9, 0xf3, 0xfb, 0x04, 0x5c, 0x79, 0x14, 0x8f, 0xef, 0x23, 0xc4, 0xb5, 0xf9, 0x13,
|
||||
0xdf, 0xa4, 0xc1, 0x0f, 0xa0, 0xfb, 0x93, 0xcc, 0x66, 0xc4, 0x81, 0x13, 0x43, 0xe7, 0x47, 0x4d,
|
||||
0x92, 0x6d, 0x0e, 0xd0, 0xe6, 0x6e, 0x02, 0x8a, 0xe9, 0x4e, 0x0d, 0xa0, 0x2f, 0x2c, 0x7b, 0xae,
|
||||
0xc8, 0xd8, 0x69, 0xf6, 0x9f, 0x13, 0x50, 0x43, 0x64, 0x0a, 0x19, 0x2a, 0x56, 0x0b, 0x1c, 0x2f,
|
||||
0x7f, 0x7e, 0xa5, 0xcc, 0x6a, 0xbe, 0xf0, 0x3a, 0x14, 0xe3, 0xd9, 0x97, 0xdc, 0xc1, 0x2a, 0x3e,
|
||||
0xf4, 0x93, 0xf3, 0xb9, 0xbb, 0x73, 0x1f, 0xc7, 0x2b, 0x40, 0xa3, 0x90, 0xb5, 0x9d, 0xfb, 0x4b,
|
||||
0x45, 0x58, 0x6e, 0x29, 0xda, 0x5b, 0xce, 0xb4, 0x8a, 0xbc, 0xaa, 0x1c, 0xf4, 0xec, 0x66, 0x13,
|
||||
0xd4, 0xc7, 0x44, 0x59, 0x7b, 0xcb, 0x91, 0x57, 0x64, 0x02, 0x4a, 0xf5, 0x72, 0xd8, 0xbb, 0xf7,
|
||||
0x09, 0x6c, 0x6a, 0xb5, 0xb0, 0xa6, 0xd3, 0x1d, 0x5c, 0xfc, 0x56, 0x06, 0xfc, 0xb8, 0x56, 0xd7,
|
||||
0xc9, 0x12, 0x43, 0x7a, 0x04, 0x2e, 0x22, 0x4d, 0xf2, 0xf0, 0xea, 0x92, 0x78, 0x9a, 0xae, 0x24,
|
||||
0x13, 0x6b, 0xc8, 0x33, 0x32, 0x29, 0x1c, 0x31, 0x6f, 0x39, 0x25, 0x6e, 0x66, 0x7c, 0x14, 0x78,
|
||||
0xef, 0xa4, 0xfc, 0x4a, 0xbe, 0x77, 0x8b, 0x67, 0x5b, 0x78, 0x75, 0xaa, 0x26, 0x47, 0x10, 0xb7,
|
||||
0xbc, 0x3d, 0xc5, 0xe3, 0xf5, 0xbb, 0xd5, 0x08, 0x53, 0x32, 0x24, 0x8b, 0x6b, 0x8f, 0x46, 0xc8,
|
||||
0x97, 0x15, 0x6f, 0x42, 0x95, 0xce, 0xfd, 0xfe, 0x9e, 0xe6, 0x44, 0x6a, 0xd5, 0xe2, 0x78, 0xcd,
|
||||
0xb9, 0x72, 0xc2, 0x5d, 0xc7, 0xf7, 0x2e, 0xef, 0xf2, 0x23, 0x24, 0x30, 0x52, 0x2b, 0x27, 0x70,
|
||||
0x79, 0x5f, 0x06, 0xce, 0x79, 0x12, 0xf2, 0x08, 0x19, 0x24, 0x9a, 0xbb, 0x88, 0xdd, 0x5d, 0x6d,
|
||||
0x8d, 0xe6, 0xf0, 0xbb, 0xe9, 0xdd, 0x5d, 0xd3, 0xc2, 0x52, 0xe6, 0xc6, 0x40, 0xc8, 0x4e, 0x6a,
|
||||
0x05, 0x0d, 0x4d, 0xdc, 0x9a, 0x9c, 0x46, 0xe8, 0x54, 0xc1, 0xaa, 0xd5, 0x8e, 0xbc, 0x54, 0x73,
|
||||
0xeb, 0x32, 0x3c, 0x7b, 0x2e, 0xf3, 0x40, 0x8b, 0xa0, 0xed, 0xf3, 0xab, 0x76, 0xa2, 0x25, 0x74,
|
||||
0x40, 0x53, 0xc8, 0x7b, 0xf0, 0xc4, 0x64, 0x1c, 0xfa, 0x4f, 0x50, 0xbd, 0x90, 0x89, 0xcf, 0x22,
|
||||
0xbc, 0x5c, 0x84, 0xdb, 0xd7, 0x7e, 0x08, 0x89, 0xea, 0x9c, 0x91, 0x2f, 0xdc, 0x05, 0x7d, 0x21,
|
||||
0x41, 0x08, 0xce, 0x15, 0x22, 0x0a, 0x26, 0xfe, 0x1c, 0x13, 0xcf, 0x65, 0x23, 0x7e, 0x41, 0x27,
|
||||
0x3b, 0x74, 0x9a, 0xa1, 0x65, 0x02, 0xea, 0xf4, 0xf6, 0x92, 0x38, 0x79, 0xa4, 0xbc, 0x27, 0x4b,
|
||||
0xe2, 0x3c, 0xd9, 0x15, 0xb8, 0xaa, 0xfc, 0x4d, 0xcc, 0x11, 0x44, 0x0f, 0x8a, 0xa3, 0x3b, 0xe0,
|
||||
0x33, 0xa5, 0xb3, 0x74, 0x7d, 0x9b, 0xdf, 0xfd, 0xa8, 0x01, 0x1f, 0xb1, 0x6f, 0xfb, 0x78, 0x2e,
|
||||
0x93, 0xdf, 0x1f, 0xd5, 0x35, 0x85, 0xdf, 0x65, 0x35, 0x11, 0xc2, 0x1d, 0xc5, 0x7e, 0x68, 0xcd,
|
||||
0x18, 0x8a, 0xf4, 0x32, 0x66, 0x0b, 0x8c, 0x4b, 0xf6, 0x65, 0x00, 0x55, 0x08, 0x24, 0x0e, 0x02,
|
||||
0x0c, 0xc6, 0x2f, 0x02, 0xe0, 0x10, 0x3d, 0x29, 0xb9, 0x86, 0x2c, 0xb8, 0x46, 0xa4, 0xb4, 0x18,
|
||||
0xa6, 0x33, 0xe4, 0x23, 0x1e, 0x73, 0xb8, 0xbc, 0x05, 0x11, 0x69, 0x05, 0x8c, 0x51, 0x11, 0xa3,
|
||||
0xc6, 0xb1, 0xa9, 0x2a, 0x42, 0xf1, 0x9b, 0x9d, 0x88, 0x7e, 0xc0, 0x6f, 0xac, 0x76, 0xea, 0x75,
|
||||
0x5a, 0xe5, 0xaf, 0xf1, 0xcc, 0x43, 0x35, 0xbb, 0x75, 0x5a, 0x8f, 0x6a, 0x5f, 0xa3, 0x41, 0x60,
|
||||
0x36, 0x30, 0x68, 0xa8, 0xeb, 0x0a, 0xe4, 0x44, 0xe2, 0x46, 0x6e, 0x8f, 0xa7, 0x56, 0xfd, 0x7f,
|
||||
0x73, 0x16, 0x5c, 0xec, 0xcb, 0xd0, 0x85, 0x60, 0x2d, 0x0e, 0x76, 0x44, 0x78, 0x66, 0x00, 0x00,
|
||||
0x39, 0x40, 0xaf, 0x2e, 0xae, 0x22, 0xe3, 0x05, 0x4e, 0x22, 0xdd, 0x3f, 0x1d, 0xf1, 0x7e, 0x1c,
|
||||
0x18, 0xd1, 0xa2, 0xc2, 0x0b, 0x72, 0xfc, 0xf4, 0x47, 0x94, 0xf6, 0xf6, 0xa6, 0x50, 0x58, 0xb0,
|
||||
0x78, 0xee, 0x63, 0x87, 0xd4, 0x8f, 0xf0, 0x86, 0x70, 0xae, 0x59, 0x12, 0xfb, 0x20, 0x8e, 0xa7,
|
||||
0xe2, 0xb3, 0x39, 0x73, 0x83, 0x21, 0xed, 0x57, 0x7a, 0x22, 0x35, 0x97, 0xd5, 0x8a, 0xf8, 0x92,
|
||||
0xcb, 0xf5, 0x7e, 0x46, 0xb2, 0x83, 0x5e, 0x5d, 0xbc, 0x48, 0xdb, 0xea, 0x65, 0x63, 0x2a, 0xe9,
|
||||
0xa0, 0x21, 0x0e, 0x1a, 0x42, 0xc8, 0xce, 0xc6, 0x15, 0x46, 0xc8, 0x9b, 0x09, 0xfd, 0x91, 0xf5,
|
||||
0xc8, 0x32, 0x90, 0x79, 0x52, 0x78, 0xf7, 0xe6, 0x8d, 0x7e, 0x05, 0xd7, 0xe7, 0xd0, 0x5a, 0x04,
|
||||
0x5d, 0xf2, 0xb3, 0x15, 0xe2, 0x49, 0x18, 0xd4, 0xf3, 0x78, 0x19, 0x80, 0x70, 0x1a, 0x90, 0x4f,
|
||||
0xc7, 0x96, 0x9b, 0x74, 0x3c, 0xd3, 0x0e, 0xac, 0x6b, 0x73, 0x56, 0x65, 0x33, 0x3f, 0xeb, 0x18,
|
||||
0xdb, 0x38, 0xcd, 0x2c, 0x31, 0xed, 0x39, 0xfd, 0x3b, 0x06, 0xee, 0x10, 0x2c, 0x71, 0x02, 0x6a,
|
||||
0x1a, 0xf8, 0x4f, 0xa0, 0x0f, 0xf2, 0x28, 0x07, 0x9e, 0xc5, 0x18, 0x8b, 0xee, 0x5e, 0x14, 0x8b,
|
||||
0x2e, 0x62, 0xa7, 0x57, 0x77, 0xc4, 0xb8, 0xb1, 0xec, 0xf6, 0x56, 0xc4, 0xa6, 0xcd, 0x32, 0xa3,
|
||||
0x86, 0x67, 0x5f, 0x8a, 0xdd, 0x60, 0x7e, 0xea, 0x42, 0x36, 0x13, 0x52, 0xca, 0x95, 0x0b, 0x0f,
|
||||
0x0b, 0x29, 0x62, 0x2d, 0x21, 0xd9, 0x05, 0x3d, 0xb7, 0x25, 0x2d, 0x8f, 0x45, 0x11, 0x71, 0xf1,
|
||||
0xae, 0x27, 0x0b, 0x5f, 0x69, 0x17, 0x9f, 0x0e, 0x99, 0x14, 0xb5, 0xac, 0x17, 0xe5, 0x8d, 0x17,
|
||||
0xd1, 0x2b, 0xe2, 0x17, 0x62, 0x04, 0xd5, 0xa4, 0x7b, 0x8a, 0xb7, 0x8c, 0xfa, 0xd7, 0xe2, 0x86,
|
||||
0x39, 0x39, 0x5b, 0x86, 0x21, 0xe8, 0x7f, 0x4a, 0x43, 0xde, 0x2b, 0xbf, 0x3e, 0xa5, 0x1b, 0xd5,
|
||||
0xea, 0x46, 0xb3, 0xa9, 0xd1, 0xce, 0x9a, 0x5e, 0xba, 0xbe, 0xd5, 0x27, 0x4e, 0x1b, 0x4e, 0xfd,
|
||||
0x0a, 0x59, 0x9c, 0x16, 0xc9, 0x67, 0x37, 0x27, 0xd2, 0xca, 0x02, 0x9b, 0x4c, 0x1d, 0x71, 0x3a,
|
||||
0xa9, 0x5b, 0xdc, 0xc6, 0xab, 0x1c, 0x7e, 0xf7, 0xee, 0xe4, 0xe4, 0xa4, 0x4b, 0xfe, 0xdd, 0x5f,
|
||||
0x86, 0xc5, 0x95, 0x01, 0x0d, 0x7e, 0xc4, 0x96, 0x00, 0x99, 0x83, 0xc4, 0x88, 0x2d, 0x26, 0x52,
|
||||
0xe3, 0x52, 0xbd, 0xf7, 0x09, 0x98, 0x14, 0xbc, 0x67, 0xdc, 0x95, 0x45, 0xd6, 0x94, 0x09, 0x07,
|
||||
0xb6, 0x42, 0x2c, 0x5c, 0x6b, 0x34, 0x04, 0x0c, 0x84, 0x03, 0x58, 0x46, 0x08, 0x07, 0x8a, 0x4a,
|
||||
0x6c, 0x94, 0x57, 0xc4, 0xdf, 0x55, 0x16, 0x90, 0x42, 0x39, 0x00, 0x21, 0xa9, 0x3a, 0xde, 0x57,
|
||||
0x26, 0x6f, 0xd3, 0x62, 0x01, 0x14, 0x11, 0xcb, 0x9b, 0x80, 0x87, 0x9d, 0xc2, 0xe0, 0x83, 0xac,
|
||||
0x45, 0x04, 0xaa, 0x54, 0x39, 0x4d, 0x16, 0xd3, 0x72, 0x81, 0x4d, 0xbe, 0x8a, 0x51, 0x7e, 0x5d,
|
||||
0x63, 0x1f, 0xdb, 0x87, 0x2b, 0x10, 0xa9, 0x1f, 0xf1, 0x4b, 0x6a, 0xc8, 0x23, 0x07, 0x13, 0xdc,
|
||||
0xff, 0x8d, 0xb1, 0x80, 0x58, 0x31, 0x39, 0x84, 0x14, 0xce, 0x38, 0x25, 0xce, 0x54, 0x70, 0x80,
|
||||
0x07, 0xac, 0xf8, 0x11, 0xaa, 0x09, 0x08, 0xd6, 0x8e, 0x51, 0x37, 0xb1, 0x8b, 0x8d, 0x83, 0xb3,
|
||||
0x33, 0x4c, 0x9c, 0x95, 0xca, 0x25, 0x9f, 0x29, 0xbf, 0x52, 0x99, 0xde, 0x6d, 0x83, 0x48, 0xc1,
|
||||
0x42, 0x28, 0xfe, 0x0a, 0x42, 0xd4, 0xa4, 0xf3, 0x43, 0x0e, 0xf1, 0xbe, 0xb5, 0x37, 0x13, 0x2c,
|
||||
0x28, 0x52, 0x2f, 0x08, 0x28, 0x3d, 0xde, 0x6e, 0x06, 0xab, 0x58, 0x46, 0xe0, 0x0d, 0x13, 0xe3,
|
||||
0x92, 0xda, 0x10, 0xa0, 0x0f, 0x59, 0x7a, 0x0f, 0x9e, 0xff, 0xe4, 0x49, 0xad, 0x56, 0x33, 0xe3,
|
||||
0x08, 0x85, 0xcd, 0x3e, 0xfa, 0x6e, 0x8c, 0x17, 0xb5, 0x95, 0x6b, 0x3c, 0x4c, 0x26, 0xd7, 0x89,
|
||||
0xdb, 0x95, 0x45, 0x90, 0x39, 0x90, 0x30, 0x80, 0xa9, 0x25, 0xad, 0x78, 0x7e, 0x70, 0x6b, 0x43,
|
||||
0xb7, 0xf1, 0xb2, 0xda, 0xd6, 0x0e, 0x2e, 0x6e, 0x59, 0x24, 0x65, 0xae, 0x99, 0x15, 0xbc, 0x7d,
|
||||
0x90, 0x89, 0xbc, 0x67, 0x45, 0x94, 0x76, 0x7b, 0x71, 0xaa, 0x56, 0x76, 0x6e, 0xd2, 0xb6, 0x39,
|
||||
0x34, 0x9b, 0x4e, 0x1d, 0x1b, 0x8f, 0x05, 0x12, 0xa5, 0x89, 0xf0, 0x3b, 0xc1, 0x75, 0x50, 0x4d,
|
||||
0x3c, 0x03, 0xa6, 0x34, 0xf5, 0x3d, 0x60, 0xb8, 0x97, 0xd2, 0x97, 0x27, 0xc6, 0x14, 0xa3, 0xb1,
|
||||
0x07, 0x12, 0xcf, 0xa6, 0x54, 0xce, 0x78, 0xcd, 0x5b, 0xb2, 0x4f, 0x5c, 0x70, 0x24, 0xe2, 0xb2,
|
||||
0x58, 0xf9, 0xae, 0xb7, 0x44, 0x21, 0xce, 0xed, 0x25, 0xa2, 0xc6, 0x23, 0x77, 0x20, 0xe1, 0xd4,
|
||||
0xc6, 0x13, 0xe1, 0xd2, 0xb2, 0x86, 0x54, 0x61, 0x1b, 0x88, 0xfb, 0x35, 0xd7, 0xda, 0x6d, 0xdd,
|
||||
0x89, 0x71, 0x27, 0x3b, 0x6f, 0x99, 0xf2, 0x26, 0x72, 0x77, 0x72, 0xaa, 0xe8, 0x45, 0x4b, 0xf8,
|
||||
0x63, 0x8d, 0x7d, 0x60, 0x82, 0x5b, 0x22, 0xd2, 0x47, 0xb3, 0x44, 0xb5, 0xae, 0xa5, 0x8a, 0x23,
|
||||
0x5d, 0x7e, 0xb3, 0x5f, 0xd9, 0x72, 0xf4, 0xcd, 0xcc, 0x8f, 0xe0, 0xb1, 0x28, 0xfe, 0x73, 0x17,
|
||||
0xe2, 0x34, 0x61, 0xd4, 0x49, 0xc6, 0x95, 0x77, 0xfe, 0x77, 0x84, 0x35, 0xc4, 0x54, 0xcd, 0x45,
|
||||
0xb7, 0xb4, 0x90, 0xc1, 0x48, 0x4d, 0xfb, 0xd5, 0x34, 0x18, 0x91, 0x64, 0x7c, 0x65, 0x1b, 0xc1,
|
||||
0x51, 0x09, 0x82, 0x23, 0x89, 0xe1, 0x28, 0x17, 0xf1, 0x42, 0xce, 0xef, 0x35, 0x3f, 0x4a, 0x49,
|
||||
0x7e, 0x15, 0xf6, 0x54, 0xc9, 0x16, 0x76, 0x01, 0x3a, 0xa0, 0x27, 0xd1, 0xaa, 0x9e, 0x8b, 0x57,
|
||||
0x0b, 0x23, 0x17, 0xc6, 0x86, 0x05, 0x6f, 0xca, 0x8f, 0xb9, 0x92, 0x4a, 0x69, 0xf7, 0xfe, 0x68,
|
||||
0x0c, 0xc9, 0xc8, 0x43, 0x57, 0x88, 0xc1, 0xd0, 0x41, 0x0c, 0xdd, 0x39, 0x43, 0x2f, 0x04, 0x5f,
|
||||
0xe0, 0xf3, 0x98, 0x67, 0xf6, 0x47, 0x78, 0x0e, 0x76, 0x19, 0x75, 0x1a, 0x5c, 0x4a, 0x42, 0x86,
|
||||
0x95, 0x02, 0x89, 0xdc, 0xb1, 0xd3, 0x3f, 0xe9, 0xb0, 0x41, 0xa3, 0x80, 0x1a, 0x09, 0x97, 0x30,
|
||||
0x0d, 0x4f, 0x78, 0xbd, 0xb1, 0xe3, 0x3a, 0xe8, 0x8a, 0x43, 0xe2, 0x5a, 0x33, 0x48, 0x10, 0xa3,
|
||||
0x25, 0x8b, 0xb8, 0xcb, 0xf9, 0x15, 0x5c, 0xa1, 0xcb, 0xbd, 0x23, 0x98, 0x3a, 0xc9, 0x85, 0xd5,
|
||||
0xe4, 0x9c, 0x6a, 0xbf, 0xe4, 0x08, 0x69, 0x22, 0x13, 0x74, 0x26, 0xe8, 0x07, 0xc7, 0x18, 0xa3,
|
||||
0xd9, 0x37, 0x00, 0x00, 0x1b, 0xb6, 0x0b, 0x7e, 0x19, 0xd4, 0xa2, 0x52, 0xa6, 0x17, 0xd7, 0xd6,
|
||||
0x03, 0x43, 0x47, 0xc4, 0x66, 0x8b, 0xc4, 0x2d, 0x31, 0x28, 0x4a, 0x24, 0x81, 0x9d, 0xb1, 0x37,
|
||||
0x89, 0x93, 0x23, 0x11, 0x5c, 0xa5, 0xd9, 0x8d, 0x97, 0x91, 0xd8, 0x19, 0x82, 0xf9, 0x4e, 0x1c,
|
||||
0x9b, 0x45, 0xbb, 0xc7, 0x67, 0x3e, 0x4d, 0xb4, 0x63, 0x78, 0x67, 0x44, 0x66, 0xfd, 0x32, 0x76,
|
||||
0x47, 0x8e, 0x40, 0x8e, 0xa2, 0x99, 0xb9, 0xfe, 0x58, 0x24, 0x38, 0x40, 0x64, 0x3a, 0xcd, 0x65,
|
||||
0x05, 0x95, 0xf2, 0xb4, 0xe0, 0xea, 0x5c, 0x86, 0xfd, 0x1d, 0xf6, 0xc0, 0x97, 0xb7, 0x22, 0xce,
|
||||
0x19, 0xc1, 0x62, 0xfe, 0xc1, 0x95, 0xe1, 0x8f, 0x85, 0x15, 0x04, 0xb8, 0xd0, 0xf9, 0x7d, 0x1f,
|
||||
0x92, 0x34, 0xdf, 0x3b, 0xb9, 0xa3, 0x49, 0xd9, 0x0e, 0xc8, 0x6b, 0x02, 0xde, 0x6d, 0x77, 0x49,
|
||||
0xcf, 0xbf, 0x60, 0x3c, 0xbc, 0x40, 0x05, 0xc3, 0xab, 0x6c, 0x5b, 0x5e, 0x39, 0x06, 0xec, 0xfb,
|
||||
0x67, 0x18, 0x92, 0xcd, 0x93, 0x4d, 0xc3, 0xab, 0xec, 0xf7, 0x0e, 0xe9, 0xcc, 0x78, 0xb9, 0x2a,
|
||||
0xa7, 0xc4, 0x7b, 0xb4, 0xa0, 0x57, 0xb8, 0x6d, 0xed, 0xbb, 0x93, 0x4d, 0x89, 0x6f, 0x64, 0x46,
|
||||
0x9b, 0x9b, 0x81, 0x86, 0x9e, 0x76, 0xf4, 0xa1, 0x4a, 0xcd, 0x5c, 0x26, 0x72, 0x73, 0x79, 0x57,
|
||||
0xd8, 0x18, 0xa8, 0xbc, 0x71, 0x67, 0x00, 0x6a, 0xd7, 0x3d, 0xfb, 0x02, 0x69, 0xf0, 0x94, 0xba,
|
||||
0x09, 0xa5, 0xeb, 0x26, 0x74, 0xc9, 0xc9, 0xa7, 0x3b, 0xf0, 0x46, 0x31, 0x23, 0x93, 0xcd, 0x8e,
|
||||
0x7e, 0x02, 0x59, 0xc9, 0xf6, 0xe9, 0x1a, 0xad, 0xa3, 0x07, 0xb6, 0x2a, 0x9c, 0x0c, 0xdc, 0xde,
|
||||
0xac, 0x93, 0x40, 0xfc, 0x28, 0x75, 0xee, 0xcc, 0xdf, 0x26, 0xba, 0x26, 0x1e, 0xe9, 0xe4, 0x90,
|
||||
0x63, 0xfc, 0x41, 0x8a, 0x1d, 0xf8, 0xf0, 0xe0, 0xe7, 0x6e, 0xa2, 0x95, 0x6c, 0x0b, 0xaf, 0x61,
|
||||
0xbc, 0xc6, 0xda, 0x31, 0xed, 0x1f, 0x4b, 0x7a, 0xbc, 0x0c, 0xd9, 0x81, 0xeb, 0x27, 0xda, 0x7f,
|
||||
0xc7, 0xc1, 0xc2, 0x12, 0x59, 0xa4, 0xbd, 0xf5, 0x3e, 0xaf, 0xab, 0x43, 0x2e, 0xba, 0x92, 0x70,
|
||||
0x8d, 0x4e, 0xa9, 0xb2, 0xd1, 0x36, 0x97, 0x5d, 0xf3, 0x4c, 0x55, 0x7f, 0xc4, 0xa6, 0x39, 0x6f,
|
||||
0x47, 0xfc, 0xb8, 0xbb, 0x65, 0x5e, 0x39, 0xe5, 0xa9, 0x2e, 0xe8, 0x8b, 0x58, 0x47, 0xcc, 0x16,
|
||||
0x17, 0x96, 0xe3, 0xa5, 0xfe, 0x0a, 0x7f, 0x2b, 0xe3, 0x95, 0x02, 0xe1, 0x7a, 0x74, 0x93, 0x55,
|
||||
0x00, 0xa2, 0x54, 0xe4, 0x87, 0xbc, 0xcb, 0x33, 0x88, 0xb4, 0x63, 0xb0, 0x81, 0x95, 0xff, 0x5e,
|
||||
0x8f, 0xc4, 0xc8, 0x5b, 0xa6, 0xa4, 0x62, 0xd9, 0x36, 0x0b, 0x20, 0x27, 0xa8, 0x71, 0x74, 0x3b,
|
||||
0x0c, 0x3d, 0xb1, 0x8e, 0x85, 0x9b, 0xab, 0x07, 0x7f, 0xcc, 0x35, 0x9c, 0x69, 0xdd, 0x09, 0x05,
|
||||
0x06, 0x10, 0xc4, 0xaf, 0xfc, 0x79, 0xc1, 0x72, 0xa5, 0xe1, 0x5a, 0xa4, 0x02, 0x86, 0x38, 0x35,
|
||||
0x4b, 0x7f, 0x1b, 0x8a, 0x8b, 0x76, 0x6a, 0x81, 0xc3, 0x85, 0x8f, 0xd3, 0x10, 0x32, 0x86, 0x49,
|
||||
0x1d, 0xb2, 0x1b, 0xde, 0x0c, 0x35, 0xe9, 0x1f, 0xb0, 0xe4, 0xde, 0x03, 0x45, 0xab, 0x83, 0xb7,
|
||||
0x7e, 0xaf, 0x6e, 0x09, 0xd9, 0xde, 0x61, 0x5b, 0xe5, 0xed, 0x3b, 0x74, 0x78, 0x4e, 0x48, 0x1e,
|
||||
0x4c, 0xb9, 0xda, 0xb6, 0xc3, 0x4a, 0xce, 0x10, 0x89, 0xb8, 0xae, 0xb8, 0x7f, 0x59, 0xee, 0xae,
|
||||
0x69, 0x52, 0x3d, 0xbe, 0x49, 0x53, 0xb0, 0x97, 0xb4, 0x47, 0x53, 0x76, 0xfb, 0x5f, 0x48, 0x9a,
|
||||
0xe4, 0x8f, 0x6c, 0x44, 0x3c, 0x83, 0xba, 0xc7, 0xfe, 0x37, 0x0f, 0xa4, 0xb8, 0x09, 0x3a, 0xc5,
|
||||
0xf4, 0x5f, 0x94, 0x04, 0xcb, 0xa0, 0xce, 0x7b, 0x84, 0xaf, 0x85, 0x96, 0xa1, 0xd4, 0x27, 0x89,
|
||||
0x35, 0x57, 0xda, 0x6c, 0xa4, 0x98, 0x67, 0x90, 0x62, 0x96, 0x3b, 0xcb, 0x45, 0x59, 0xb6, 0x99,
|
||||
0x65, 0x95, 0x8a, 0x7e, 0x04, 0x4f, 0xd4, 0xa4, 0x8c, 0x38, 0x95, 0xf5, 0x1e, 0x32, 0x07, 0x09,
|
||||
0x53, 0x9e, 0xc4, 0xf0, 0x76, 0x47, 0xa1, 0xba, 0x4d, 0x41, 0x2f, 0x54, 0xa5, 0x90, 0xa2, 0x8e,
|
||||
0x7d, 0x1f, 0xf2, 0x7c, 0x1d, 0xcb, 0xbf, 0x28, 0xc9, 0x57, 0xa3, 0x94, 0x28, 0x46, 0xdd, 0x0f,
|
||||
0xd6, 0x62, 0x61, 0x11, 0xdb, 0x0f, 0x43, 0x59, 0xfa, 0x61, 0x7a, 0x20, 0x92, 0x9f, 0x57, 0x64,
|
||||
0xf4, 0x01, 0x92, 0x53, 0xa2, 0x44, 0x71, 0xe8, 0x43, 0x81, 0x83, 0xde, 0x24, 0x6d, 0x2f, 0x70,
|
||||
0x02, 0x95, 0x9d, 0xd8, 0x4b, 0x84, 0xb9, 0x83, 0x02, 0xf6, 0x6a, 0x88, 0x82, 0x3f, 0xd2, 0xb3,
|
||||
0x89, 0x1d, 0xff, 0x0d, 0xb3, 0x7a, 0x13, 0x0c, 0x23, 0xce, 0x71, 0x2c, 0x05, 0xf7, 0x7e, 0x53,
|
||||
0x70, 0x95, 0x0d, 0xc9, 0x19, 0xe5, 0x6b, 0xf3, 0x03, 0x2a, 0xd4, 0x3d, 0xa4, 0x7e, 0x91, 0x83,
|
||||
0x4c, 0x0b, 0x9d, 0x3a, 0x0b, 0xfd, 0x28, 0x9a, 0x5a, 0x13, 0xf6, 0x9a, 0x5c, 0xee, 0xdf, 0x0b,
|
||||
0xdd, 0xc9, 0x10, 0x10, 0xfc, 0x8d, 0xac, 0x0d, 0xe6, 0xee, 0xcf, 0x77, 0x31, 0xf7, 0xcd, 0xdd,
|
||||
0x3e, 0x73, 0x83, 0x3f, 0xb2, 0x47, 0x16, 0x11, 0xa2, 0x95, 0xed, 0x94, 0x5b, 0xcb, 0x65, 0x31,
|
||||
0x44, 0xb5, 0x38, 0x63, 0xf3, 0x35, 0xc6, 0x6e, 0xdf, 0x0b, 0x53, 0x41, 0x6e, 0x26, 0x50, 0x8d,
|
||||
0x83, 0xf0, 0xf8, 0xcc, 0x12, 0x25, 0x3f, 0x97, 0xbf, 0x47, 0xb6, 0xd9, 0x29, 0xb9, 0xbf, 0x7a,
|
||||
0x45, 0x01, 0x77, 0x88, 0x11, 0xde, 0x71, 0x45, 0x48, 0xf0, 0xdf, 0x73, 0x67, 0xb5, 0xdb, 0x96,
|
||||
0xee, 0x87, 0xaf, 0x2b, 0x7a, 0xa5, 0x84, 0x10, 0x12, 0xc1, 0x6e, 0xe7, 0xe6, 0x59, 0xe8, 0xfb,
|
||||
0x8f, 0x65, 0xd9, 0xc0, 0x47, 0xcb, 0x89, 0x79, 0x63, 0x03, 0x2c, 0xad, 0xb2, 0xe7, 0x40, 0xf4,
|
||||
0x7b, 0x58, 0xea, 0x3d, 0x49, 0x00, 0xbe, 0x26, 0x3c, 0x85, 0x4c, 0x81, 0x2a, 0xdb, 0xe7, 0x76,
|
||||
0x46, 0x4b, 0x2f, 0x74, 0xa2, 0xb2, 0x00, 0x0a, 0x72, 0xe7, 0x77, 0x19, 0xf0, 0x27, 0x7d, 0xa0,
|
||||
0x4a, 0xc2, 0x48, 0xc7, 0x17, 0xa3, 0x22, 0x9e, 0x0e, 0x2d, 0x70, 0xe8, 0x36, 0xcb, 0x99, 0xce,
|
||||
0x6b, 0x47, 0x2a, 0xcf, 0xee, 0xf3, 0x87, 0x33, 0x13, 0x65, 0x7a, 0xb2, 0x69, 0xff, 0x83, 0x48,
|
||||
0xac, 0x7d, 0x99, 0xe3, 0x72, 0x1b, 0x2c, 0x3b, 0x3a, 0x58, 0x7a, 0x52, 0x90, 0x6e, 0x4d, 0x8b,
|
||||
0x57, 0xfc, 0xe7, 0xbb, 0x92, 0xa9, 0x57, 0x0e, 0x9c, 0xe7, 0x72, 0xad, 0x57, 0x0e, 0x14, 0xa2,
|
||||
0x90, 0x5f, 0x39, 0x52, 0x88, 0x12, 0xae, 0x94, 0x9f, 0x2a, 0xe4, 0x15, 0x4b, 0x3a, 0x3d, 0x10,
|
||||
0x4e, 0x76, 0x1e, 0xf2, 0x95, 0x7a, 0xe7, 0xec, 0x4e, 0xd6, 0x3b, 0x30, 0x06, 0x92, 0x75, 0x30,
|
||||
0xad, 0x47, 0xa8, 0xba, 0x5c, 0x70, 0x3d, 0x50, 0x35, 0xec, 0x88, 0xa2, 0xdb, 0xf9, 0x71, 0x65,
|
||||
0x33, 0x41, 0x3e, 0x1b, 0x16, 0x3d, 0x8c, 0x0c, 0x6b, 0xb0, 0xe2, 0xa7, 0x93, 0x47, 0x5c, 0xea,
|
||||
0x09, 0x5f, 0xfe, 0xc4, 0xac, 0x73, 0x04, 0xc5, 0x8c, 0x2a, 0x89, 0x11, 0x0f, 0xcb, 0x94, 0xfa,
|
||||
0x8a, 0xdf, 0xf8, 0x24, 0xca, 0x53, 0x68, 0x05, 0xd8, 0x8f, 0x58, 0xf8, 0x8f, 0x30, 0x58, 0xdd,
|
||||
0xa3, 0xde, 0x95, 0x64, 0x88, 0xe5, 0x3e, 0x59, 0xab, 0x88, 0xe0, 0x48, 0x75, 0xcf, 0x52, 0x24,
|
||||
0xe0, 0x1e, 0x1e, 0xf4, 0xdd, 0x80, 0x2e, 0x51, 0x7c, 0x5c, 0xfc, 0x12, 0xcf, 0x5d, 0xba, 0x4e,
|
||||
0x15, 0xe9, 0x18, 0x42, 0x71, 0x7c, 0x16, 0xbb, 0x74, 0xec, 0x6d, 0x82, 0x4e, 0x1c, 0x8f, 0xd1,
|
||||
0x48, 0xe5, 0xfc, 0x1e, 0x0a, 0x88, 0x4a, 0x26, 0xe8, 0xf7, 0xb7, 0xa3, 0x57, 0x0b, 0x22, 0x7b,
|
||||
0xca, 0xab, 0x41, 0xfc, 0x45, 0x46, 0x12, 0xb3, 0x45, 0xe0, 0xe6, 0xe9, 0x57, 0xca, 0x73, 0xc3,
|
||||
0x06, 0x25, 0xff, 0x7c, 0x6e, 0x48, 0x93, 0xbd, 0xf4, 0x74, 0xcb, 0xbd, 0x01, 0x85, 0x0b, 0x4f,
|
||||
0x01, 0xca, 0xf2, 0x42, 0xdc, 0x23, 0xf8, 0x3f, 0xd9, 0x7c, 0xa8, 0xe3, 0x7e, 0x4a, 0xae, 0x4c,
|
||||
0x16, 0xbf, 0x1b, 0x99, 0x90, 0xad, 0xe3, 0x56, 0x0c, 0xee, 0xcb, 0xe0, 0x0f, 0xc7, 0xfe, 0x0f,
|
||||
0x30, 0xf6, 0xeb, 0x92, 0x48, 0x56, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
|
||||
3745
wled00/html_ui.h
3745
wled00/html_ui.h
File diff suppressed because it is too large
Load Diff
@@ -265,12 +265,9 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
|
||||
}
|
||||
|
||||
if (set < 2) stop = start + 1;
|
||||
uint32_t c = gamma32(RGBW32(rgbw[0], rgbw[1], rgbw[2], rgbw[3]));
|
||||
for (int i = start; i < stop; i++) {
|
||||
if (strip.gammaCorrectCol) {
|
||||
seg.setPixelColor(i, gamma8(rgbw[0]), gamma8(rgbw[1]), gamma8(rgbw[2]), gamma8(rgbw[3]));
|
||||
} else {
|
||||
seg.setPixelColor(i, rgbw[0], rgbw[1], rgbw[2], rgbw[3]);
|
||||
}
|
||||
seg.setPixelColor(i, c);
|
||||
}
|
||||
if (!set) start++;
|
||||
set = 0;
|
||||
@@ -589,8 +586,6 @@ void serializeInfo(JsonObject root)
|
||||
leds["fps"] = strip.getFps();
|
||||
leds[F("maxpwr")] = (strip.currentMilliamps)? strip.ablMilliampsMax : 0;
|
||||
leds[F("maxseg")] = strip.getMaxSegments();
|
||||
//leds[F("actseg")] = strip.getActiveSegmentsNum();
|
||||
//leds[F("seglock")] = false; //might be used in the future to prevent modifications to segment config
|
||||
leds[F("cpal")] = strip.customPalettes.size(); //number of custom palettes
|
||||
|
||||
#ifndef WLED_DISABLE_2D
|
||||
@@ -617,10 +612,6 @@ void serializeInfo(JsonObject root)
|
||||
leds[F("wv")] = totalLC & 0x02; // deprecated, true if white slider should be displayed for any segment
|
||||
leds["cct"] = totalLC & 0x04; // deprecated, use info.leds.lc
|
||||
|
||||
#ifdef WLED_DISABLE_AUDIO
|
||||
root[F("noaudio")] = true;
|
||||
#endif
|
||||
|
||||
#ifdef WLED_DEBUG
|
||||
JsonArray i2c = root.createNestedArray(F("i2c"));
|
||||
i2c.add(i2c_sda);
|
||||
|
||||
@@ -184,8 +184,8 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
||||
turnOnAtBoot = request->hasArg(F("BO"));
|
||||
t = request->arg(F("BP")).toInt();
|
||||
if (t <= 250) bootPreset = t;
|
||||
strip.gammaCorrectBri = request->hasArg(F("GB"));
|
||||
strip.gammaCorrectCol = request->hasArg(F("GC"));
|
||||
gammaCorrectBri = request->hasArg(F("GB"));
|
||||
gammaCorrectCol = request->hasArg(F("GC"));
|
||||
|
||||
fadeTransition = request->hasArg(F("TF"));
|
||||
t = request->arg(F("TD")).toInt();
|
||||
|
||||
@@ -53,6 +53,9 @@ typedef struct ip_addr ip4_addr_t;
|
||||
#define DDP_PUSH_FLAG 0x01
|
||||
#define DDP_TIMECODE_FLAG 0x10
|
||||
|
||||
#define DDP_TYPE_RGB24 0x0A
|
||||
#define DDP_TYPE_RGBW32 0x1A
|
||||
|
||||
#define ARTNET_OPCODE_OPDMX 0x5000
|
||||
|
||||
#define P_E131 0
|
||||
|
||||
2566
wled00/src/font/console_font_4x6.h
Normal file
2566
wled00/src/font/console_font_4x6.h
Normal file
File diff suppressed because it is too large
Load Diff
4102
wled00/src/font/console_font_5x12.h
Normal file
4102
wled00/src/font/console_font_5x12.h
Normal file
File diff suppressed because it is too large
Load Diff
3078
wled00/src/font/console_font_5x8.h
Normal file
3078
wled00/src/font/console_font_5x8.h
Normal file
File diff suppressed because it is too large
Load Diff
3078
wled00/src/font/console_font_6x8.h
Normal file
3078
wled00/src/font/console_font_6x8.h
Normal file
File diff suppressed because it is too large
Load Diff
3334
wled00/src/font/console_font_7x9.h
Normal file
3334
wled00/src/font/console_font_7x9.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -564,7 +564,7 @@ void setRealtimePixel(uint16_t i, byte r, byte g, byte b, byte w)
|
||||
{
|
||||
uint16_t pix = i + arlsOffset;
|
||||
if (pix < strip.getLengthTotal()) {
|
||||
if (!arlsDisableGammaCorrection && strip.gammaCorrectCol) {
|
||||
if (!arlsDisableGammaCorrection && gammaCorrectCol) {
|
||||
r = gamma8(r);
|
||||
g = gamma8(g);
|
||||
b = gamma8(b);
|
||||
@@ -665,9 +665,6 @@ void sendSysInfoUDP()
|
||||
#define DDP_FLAGS1_STORAGE 0x08
|
||||
#define DDP_FLAGS1_TIME 0x10
|
||||
|
||||
#define DDP_TYPE_RGB24 0x0A
|
||||
#define DDP_TYPE_RGBW32 0x1A // proposal, this is still not an official part of the DDP spec
|
||||
|
||||
#define DDP_ID_DISPLAY 1
|
||||
#define DDP_ID_CONFIG 250
|
||||
#define DDP_ID_STATUS 251
|
||||
@@ -695,7 +692,7 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8
|
||||
case 0: // DDP
|
||||
{
|
||||
// calculate the number of UDP packets we need to send
|
||||
size_t channelCount = length * 3; // 1 channel for every R,G,B value
|
||||
size_t channelCount = length * (isRGBW? 4:3); // 1 channel for every R,G,B value
|
||||
size_t packetCount = ((channelCount-1) / DDP_CHANNELS_PER_PACKET) +1;
|
||||
|
||||
// there are 3 channels per RGB pixel
|
||||
@@ -727,7 +724,7 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8
|
||||
// write the header
|
||||
/*0*/ddpUdp.write(flags);
|
||||
/*1*/ddpUdp.write(sequenceNumber++ & 0x0F); // sequence may be unnecessary unless we are sending twice (as requested in Sync settings)
|
||||
/*2*/ddpUdp.write(0); // data type, this is not fully defined by the DDP spec and thus left at "undefined" which is assumed to be 24-bit RGB
|
||||
/*2*/ddpUdp.write(isRGBW ? DDP_TYPE_RGBW32 : DDP_TYPE_RGB24);
|
||||
/*3*/ddpUdp.write(DDP_ID_DISPLAY);
|
||||
// data offset in bytes, 32-bit number, MSB first
|
||||
/*4*/ddpUdp.write(0xFF & (channel >> 24));
|
||||
@@ -744,7 +741,7 @@ uint8_t realtimeBroadcast(uint8_t type, IPAddress client, uint16_t length, uint8
|
||||
ddpUdp.write(scale8(buffer[bufferOffset++], bri)); // R
|
||||
ddpUdp.write(scale8(buffer[bufferOffset++], bri)); // G
|
||||
ddpUdp.write(scale8(buffer[bufferOffset++], bri)); // B
|
||||
if (isRGBW) bufferOffset++;
|
||||
if (isRGBW) ddpUdp.write(scale8(buffer[bufferOffset++], bri)); // W
|
||||
}
|
||||
|
||||
if (!ddpUdp.endPacket()) {
|
||||
|
||||
@@ -133,9 +133,6 @@
|
||||
#endif
|
||||
|
||||
#ifdef USERMOD_AUDIOREACTIVE
|
||||
#ifdef WLED_DISABLE_AUDIO
|
||||
#error Incompatible options: WLED_DISABLE_AUDIO and USERMOD_AUDIOREACTIVE
|
||||
#endif
|
||||
#include "../usermods/audioreactive/audio_reactive.h"
|
||||
#endif
|
||||
|
||||
@@ -260,9 +257,6 @@ void registerUsermods()
|
||||
#endif
|
||||
|
||||
#ifdef USERMOD_AUDIOREACTIVE
|
||||
#ifdef WLED_DISABLE_AUDIO
|
||||
#error Incompatible options: WLED_DISABLE_AUDIO and USERMOD_AUDIOREACTIVE
|
||||
#endif
|
||||
usermods.add(new AudioReactive());
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -390,7 +390,6 @@ uint16_t crc16(const unsigned char* data_p, size_t length) {
|
||||
}
|
||||
|
||||
|
||||
#ifndef WLED_DISABLE_AUDIO
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Begin simulateSound (to enable audio enhanced effects to display something)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -402,7 +401,6 @@ typedef enum UM_SoundSimulations {
|
||||
UMS_14_3
|
||||
} um_soundSimulations_t;
|
||||
|
||||
// this is still work in progress
|
||||
um_data_t* simulateSound(uint8_t simulationId)
|
||||
{
|
||||
static uint8_t samplePeak;
|
||||
@@ -507,7 +505,6 @@ um_data_t* simulateSound(uint8_t simulationId)
|
||||
|
||||
return um_data;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void enumerateLedmaps() {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
// version code in format yymmddb (b = daily build)
|
||||
#define VERSION 2208311
|
||||
#define VERSION 2209061
|
||||
|
||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||
//#define WLED_USE_MY_CONFIG
|
||||
@@ -287,9 +287,11 @@ WLED_GLOBAL byte bootPreset _INIT(0); // save preset to load
|
||||
//if true, a segment per bus will be created on boot and LED settings save
|
||||
//if false, only one segment spanning the total LEDs is created,
|
||||
//but not on LED settings save if there is more than one segment currently
|
||||
WLED_GLOBAL bool autoSegments _INIT(false);
|
||||
WLED_GLOBAL bool correctWB _INIT(false); //CCT color correction of RGB color
|
||||
WLED_GLOBAL bool cctFromRgb _INIT(false); //CCT is calculated from RGB instead of using seg.cct
|
||||
WLED_GLOBAL bool autoSegments _INIT(false);
|
||||
WLED_GLOBAL bool correctWB _INIT(false); // CCT color correction of RGB color
|
||||
WLED_GLOBAL bool cctFromRgb _INIT(false); // CCT is calculated from RGB instead of using seg.cct
|
||||
WLED_GLOBAL bool gammaCorrectCol _INIT(false); // use gamma correction on colors
|
||||
WLED_GLOBAL bool gammaCorrectBri _INIT(false); // use gamma correction on brightness
|
||||
|
||||
WLED_GLOBAL byte col[] _INIT_N(({ 255, 160, 0, 0 })); // current RGB(W) primary color. col[] should be updated if you want to change the color.
|
||||
WLED_GLOBAL byte colSec[] _INIT_N(({ 0, 0, 0, 0 })); // current RGB(W) secondary color
|
||||
|
||||
@@ -140,8 +140,8 @@ void loadSettingsFromEEPROM()
|
||||
ntpEnabled = EEPROM.read(327);
|
||||
currentTimezone = EEPROM.read(328);
|
||||
useAMPM = EEPROM.read(329);
|
||||
strip.gammaCorrectBri = EEPROM.read(330);
|
||||
strip.gammaCorrectCol = EEPROM.read(331);
|
||||
gammaCorrectBri = EEPROM.read(330);
|
||||
gammaCorrectCol = EEPROM.read(331);
|
||||
overlayCurrent = EEPROM.read(332);
|
||||
|
||||
alexaEnabled = EEPROM.read(333);
|
||||
|
||||
@@ -394,8 +394,8 @@ void getSettingsJS(byte subPage, char* dest)
|
||||
sappend('c',SET_F("BO"),turnOnAtBoot);
|
||||
sappend('v',SET_F("BP"),bootPreset);
|
||||
|
||||
sappend('c',SET_F("GB"),strip.gammaCorrectBri);
|
||||
sappend('c',SET_F("GC"),strip.gammaCorrectCol);
|
||||
sappend('c',SET_F("GB"),gammaCorrectBri);
|
||||
sappend('c',SET_F("GC"),gammaCorrectCol);
|
||||
sappend('c',SET_F("TF"),fadeTransition);
|
||||
sappend('v',SET_F("TD"),transitionDelayDefault);
|
||||
sappend('c',SET_F("PF"),strip.paletteFade);
|
||||
|
||||
Reference in New Issue
Block a user