Hardware components | ||||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 4 | ||||
Software apps and online services | ||||||
| ||||||
Hand tools and fabrication machines | ||||||
| ||||||
|
Recently I purchased a Infineon High-Side-Switch Shield with PROFET +2 12V BTS7002-1EPP from element14 after seeing the Electronic Fuse project published by the Infineon Team. I liked the idea of an electronic fuse and decided to turn it into a unit more suited to sitting on a work bench shelf.
Changes- The 4 Line LCD display is replaced with a color TFT display. This can display 5 lines allowing all 4 channels (electronic fuses) to be included. Also each channel is color coded so the color screen can show the status of each channel in their respective colors.
- Each channel has a red/green LED. When the LED is unlit, the channel is off. It turns green when the channel is on and will turn red when the current exceeds the channel's threshold current setting.
- Due to the lack of freely available pins on the Arduino UNO, the CPU is replaced with a 40 pin ATmega4809 microcontroller.
- A buzzer is also included to provide an audible warning when an overflow condition is detected.
- A case more suited to sit on a work bench shelf.
On power on, the Infineon logo is displayed along with the maximum current that will be allowed across all four channels. Rotating the rotary knob will allow you to set the maximum current value.
After 3 seconds of inactivity, the screen will change to the status screen.
The status screen shows the state of all four channels.
To turn on/off any of the channels, press their corresponding button. The light above the switch will turn green to show the channel is active. The display screen will also show the status as ON.
Should the output current exceed the threshold value for that channel, the light above the switch will turn red to show the channel has tripped the fuse. The display screen will also show the status as OVR. At this stage the channel will be OFF. Press the button to acknowledge the condition. The LED will go out and the display will show the status as OFF.
Should the maximum total current be exceeded, all channels will go into an overflow state and you will need to reset each of them in turn.
To change a channel's threshold (Trig) or to set the time delay (TD) from when an overflow condition is detected to when the channel is switched off, press the rotary encoder. The time delay value will flash. Turning the rotary encoder knob will change the value.
Pressing the rotary encoder again will move the cursor to the Threshold value of channel 1. Again turning the rotary encoder knob will change its value.
Each push of the rotary encoder button will advance the cursor from status to TD, to Channel 1 Threshold, to Channel 2 Threshold, to Channel 3 Threshold, to Channel 4 Threshold and back to status again.
Design changesTo reduce the pin count, all switches including the switch on the rotary encoder form a voltage divider and are connected to a single analog pin on the microprocessor. Since most of the functionality lies in the Infineon High-Side-Switch Shield, the CPU board is really only a holder for the CPU, Shield and DC-DC Buck convertor.
The display board is designed to be fixed to the front panel. It contains the TFT screen, rotary encoder, red/green LEDs and switches. The board has holes to allow for the cables from the banana sockets to pass through the board.
The STL files are included. Either take these to a 3D print shop or if you have your own printer, run them through your slicing software. I used a 0.2mm layer height and they need orientating in your slicing software.
The lugs that hold the shells together are a bit fragile. I glued on washers before creating a thread with a 3mm tap.
The Eagle files have been included should you wish to have the boards commercially made or you can do as I did and make them yourself. I used the Toner method.
Start by adding the SMD components and pin headers.
Next add the rotary encoder and switches
3D print 2 off "Fuse v3 - Spacer.stl" and super glue them to the top side of the PCB.
Place the female pin header onto the male pin header that comes with the TFT screen. Sit the assembly on the board and solder the female pin header to the board.
Sit the LEDs in their holes. Ensure they are orientated correctly. Don't solder them in yet. Instead screw the board to the front panel. Push down each LED in turn so that it sits hard against the front panel. The holes are countersunk so they LEDs should center without too much effort. Solder the LED in place. Repeat the process for all four LEDs.
The CPU board should be straight forward to assemble. The picture shows a previous version that included the resistors for the switches. These were moved to the display board to reduce the cable size going between the boards.
I used Dupont connectors to connect the CPU board to the display board. You can purchase female-to-female 40 way 10cm cables from sites like eBay or AliExpress if you don't want to make it yourself.
The back panel contains a XT60 connector and the wires that carry the high currents are all 14AWG.
NOTE: I added terminal connectors to the output holes on the Infineon High-Side-Switch Shield. If you do this, I strongly recommend using Ferrules when screwing in the 14AWG wire. (See TO FERRULE OR NOT TO FERRULE).
The ATmega4809 is part of the new breed of ATmega microprocessors. Unlike the earlier series such as the ATmega328, the new breed use a single UPDI pin to program the CPU. To program it you need a UPDI programmer. I made one using a Arduino Nano. You can find complete build instructions at Create Your Own UPDI Programmer.
You will need to add the MegaCoreX boards to your IDE.
- Select File - Preferences in the Arduino IDE
- Append the following to the "Additional Board Manager URLs":
,https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json
- Press OK
- Select Tools - Board - Board Manager
- Type MegaCoreX into the search window
- Click the Install button on the MegaCoreX entry.
Now you can select the ATmega4809 board in your IDE as shown below.
Make sure the following settings are set
- Board: ATmega4809
- Clock Speed: Internal 16MHz
- Pinout: 40 pin standard
- Bootloader: No bootloader
- Programmer: JTAG2UPDI
Select COM port that the UPDI programmer is connected to.
You will also need to install the Infineon high side switch library to your IDE.
Open the sketch and upload it to the ATmega4809.
ConclusionWhen using Li-ion batteries that can deliver large currents, shorts can be very dangerous. This build not only protects the circuit under development but also the battery itself from damage.
I'm not sure that I will ever have a need to use all four channels simultaneously but this should make a nice addition to the work bench.
/**
* @file ElectronicFuseV2.ino
* @brief Code for an electronic fuse application with Infineon BTS7002 high side switch shield.
* Specs:
* - Input voltage: 7-28V DC
* - Max. input current: 60A
* - Max. output current: 4 x 21A
*
* @copyright Copyright (c) 2021 Infineon Technologies AG
* @version 2.0.1
*
* 2021 - jbrad2089@gmail.com
* - Increased channels from 3 to 4
* - Changed processor to a ATmega4809
* - Changed LCD display to 160x128 color display (ST7735)
* - Added a RED/GREEN common anode led to each channel
*
* MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
--------------------------------------------------------------------------
Arduino IDE:
--------------------------------------------------------------------------
Board: ATmega4809
Clock Speed: Internal 16MHz
Pinout: 40 pin standard
Bootloader: No bootloader
Programmer: JTAG2UPDI
ATmega4809 Pins mapped to Ardunio Pins
________
PC0 8 1|* |40 7 PA7 (SS)
PC1 9 2| |39 6 PA6 (SCK)
PC2 10 3| |38 5 PA5 (MISO)
PC3 11 4| |37 4 PA4 (MOSI)
VCC 5| |36 3 PA3 (SCL)
GND 6| |35 2 PA2 (SDA)
PC4 12 7| |34 1 PA1 (RXD0)
PC5 13 8| |33 0 PA0 (TXD0)
(AIN0) PD0 14/A0 9| |32 GND
(AIN1) PD1 15/A1 10| |31 VCC
(AIN2) PD2 16/A2 11| |30 UPDI
(AIN3) PD3 17/A3 12| |29 32 PF6 (RST)
(AIN4) PD4 18/A4 13| |28 31/A15 PF5 (AIN15)
(AIN5) PD5 19/A5 14| |27 30/A14 PF4 (AIN14)
(AIN6) PD6 20/A6 15| |26 29/A13 PF3 (AIN13)
(AIN7) PD7 21/A7 16| |25 28/A12 PF2 (AIN12)
AVCC 17| |24 27 PF1
GND 18| |23 26 PF0
(AIN8) PE0 22/A8 19| |22 25/A11 PE3 (AIN11)
(AIN9) PE1 23/A9 20|________|21 24/A10 PE2 (AIN10)
NOTE: D8 to D13 not used on DIP 40 packages
*/
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_SCK 6 //PA6
#define TFT_MISO 5 //PA5
#define TFT_MOSI 4 //PA4
#define TFT_CS 7 //PA7
#define TFT_DC 9 //PC1
#define TFT_RST 8 //PC0
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
#define ENC_A 12 //PC4
#define ENC_B 13 //PC5
#define SWITCHES 14 //PD0
#define SW_NONE 99 //0-3 are channel switches, 98 is rotary switch, 99 is no switch pressed
#define SW_ROTARY 98
#define LED_1_G 11 //PC3
#define LED_1_R 15 //PD1
#define LED_2_G 16 //PD2
#define LED_2_R 17 //PD3
#define LED_3_G 18 //PD4
#define LED_3_R 19 //PD5
#define LED_4_G 20 //PD6
#define LED_4_R 21 //PD7
#define SPEAKER 22 //PE0
#define IN1 32 //PF6
#define IN2 0 //PA0
#define IN3 1 //PA1
#define IN4 28 //PF2
#define OLOFF 30 //PF4
#define DEN1_DEN3 29 //PF3
#define DEN2_DEN4 31 //PF5
#define VBAT 25 //PE3 (A11)
#define IS1_IS2 23 //PE1 (A9)
#define IS3_IS4 24 //PE2 (A10)
#define A_VBAT A11 //PE3
#define A_IS1_IS2 A9 //PE1
#define A_IS3_IS4 A10//PE2
#include <hss-board-arduino.hpp>
#include "Infineon.h"
#include "Memory.h"
// --------------- Defines / System settings ----------------------------------------------------------------------------------------------------------
#define RGB565(r, g, b) (((r&0xF8)<<8)|((g&0xFC)<<3)|(b>>3))
#define AMOUNT_MEASUREMENTS 16 // how many measurements are stored in order to calculate a rolling average (Must be a power of two)
#define TRIGGER_DELAY_INTERVAL 50 // [ms] how many milliseconds will td be increased when turning the knob
#define CURRENT_THRESHOLD_INTERVAL 0.2 // [A] how many Amps will th be increased when turning the knob
#define CURRENT_SUM_THRESHOLD_INTERVAL 0.5 // [A] how many Amps will the summmarized current threshold be increased when turning the knob
#define DISPLAY_UPDATE_INTERVAL 1000 // [ms] how often will Vbatt and the actual current values be updated on the LCD. Too many refreshes may affect usability of the rotary encoder.
#define MAX_CURRENT_THRESHOLD 21.0 // [A] the top limit for the current threshold when turning the knob
#define SLASH_SCREEN_TIMEOUT 3000 // Time in mS to display splash screen. Rotary encoder will change CURRENT_SUM_THRESHOLD during this period
#define CURSOR_TIMEOUT 250 // Speed of flashing cursor
#define ST7735_CURSOR RGB565(128,128,128) // Background cursor color
//Frequency for different states
#define ALL_TONE 1760
#define OVR_TONE 880
//Y position of each screen lines
#define LINE_1_Y 5
#define LINE_2_Y 25
#define LINE_3_Y 45
#define LINE_4_Y 65
#define LINE_5_Y 85
#define LINE_6_Y 105
enum STATUS_ENUM {CHAN_OFF, CHAN_ON, CHAN_OVR, CHAN_BTS_ERROR, CHAN_UNDERVOLTAGE}; //Status for each of the channels
enum CURSOR_ENUM {NORMAL, TRIGGER, CHAN_1, CHAN_2, CHAN_3, CHAN_4}; //Menu cursor positions
// --------------- Channel structure ----------------------------------------------------------------------------------------------------------
typedef struct {
uint8_t hss;
uint8_t greenPin;
uint8_t redPin;
STATUS_ENUM status;
float curThreshold;
float curMeasurementAvg;
float curMeasurement[AMOUNT_MEASUREMENTS];
float curMeasurementTotal;
uint8_t curMeasurementHead;
uint8_t curMeasurementTail;
uint8_t curMeasurementCount;
uint8_t lineY;
uint32_t color;
} CHANNEL;
#define NUM_OF_CHANNELS 4
CHANNEL channel[NUM_OF_CHANNELS] = {
{1,LED_1_G,LED_1_R,CHAN_OFF,8.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_3_Y,ST7735_RED},
{2,LED_2_G,LED_2_R,CHAN_OFF,6.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_4_Y,ST7735_YELLOW},
{3,LED_3_G,LED_3_R,CHAN_OFF,8.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_5_Y,ST7735_GREEN},
{4,LED_4_G,LED_4_R,CHAN_OFF,5.0,0.0,{0.0, 0.0, 0.0, 0.0},0.0,0,0,0,LINE_6_Y,ST7735_CYAN}
};
// -----------------------------------------------------------------------------------------------------------------------------------------------------
hardwareconfig_t EFUSE_PINS
{
.led1 = GPIOIno::unusedPin, //LED 1
.led2 = GPIOIno::unusedPin, //LED 2
.led3 = GPIOIno::unusedPin, //LED 3
.led4 = GPIOIno::unusedPin, //LED 4
.in1 = IN1, //IN 1
.in2 = IN2, //IN 2
.in3 = IN3, //IN 3
.in4 = IN4, //IN 4
.oloff = OLOFF, //OLOFF
.den1_den3 = DEN1_DEN3, //DEN 1_3
.den2_den4 = DEN2_DEN4, //DEN 2_4
.pushButtonDigital = GPIOIno::unusedPin, //PUSHBUTTONDIGITAL
.pushButtonAnalog = GPIOIno::unusedPin, //PUSHBUTTONANALOG
.vBat = A_VBAT, //VBAT
.is1_is2 = A_IS1_IS2, //IS 1_2
.is3_is4 = A_IS3_IS4 //IS 3_4
};
// --------------- Global Variables --------------------------------------------------------------------------------------------------------------------
CURSOR_ENUM menuMode = NORMAL; // state the menu
uint32_t cursorUpdateTimer = 0; // counter variable to flash the cusror
bool cursorOn = false; // cursor state
uint32_t displayUpdateTimer = 0; // counter variable to update the LCD information in constant time intervalls
uint32_t currentMeasurementTimer = 0; // counter variable to scan for an overcurrent event with a specific delay
bool currentExceededFlag = 0; // Set to one as soon as current threshold was exceeded
int8_t volatile rotaryDirection = 0; // Stores the change in the rotary encoder
bool volatile lastRotA = false; // Used to determine direction of rotary encoder
bool volatile lastRotB = false; // Used to determine direction of rotary encoder
bool eePromDirty = false; // Set true if eeprom needs to be updated
char buf[80]; // Used to format strings
// ---------------- String arrays (for display) ----------------------------------------------------------------------------------------------------------
const String statusMessages[5] = {"OFF", "ON ", "OVR", "ERR", "UND"};
//------------------------------------------------------------------------------------------------------------------------------------------------------
HssBoardIno HSS = HssBoardIno(&BTS7002, EFUSE_PINS); // create an instance of a high-side switch board with custom pin configuration in order to disable the LEDs
/*-----------------------------------------------------------------------------------------
* HARDWARE SETUP
------------------------------------------------------------------------------------------*/
void setup(void)
{
// If your TFT's plastic wrap has a Black Tab, use the following:
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
// If your TFT's plastic wrap has a Red Tab, use the following:
//tft.initR(INITR_REDTAB); // initialize a ST7735R chip, red tab
// If your TFT's plastic wrap has a Green Tab, use the following:
//tft.initR(INITR_GREENTAB); // initialize a ST7735R chip, green tab
tft.setTextWrap(false); // Allow text to run off right edge
//Read in default settings
readEepromData(); // Get last threshold settings
for(int i = 0; i < NUM_OF_CHANNELS; i++)
{
channel[i].curThreshold = ee.cuThreshold[channel[i].hss];
}
pinMode(SPEAKER,OUTPUT);
setupButtons();
setupChannelLeds();
HSS.init(); // Initialization of the High-Side-Switch-Board
setupSplashScreen(); // Display status screen and update max current setting
setupStatusScreen(); // Now display the fixed status values
updateStatusScreen(); // Show the variable status values
}
/*-----------------------------------------------------------------------------------------
* Main program loop
------------------------------------------------------------------------------------------*/
void loop(void)
{
checkAllCurrent(); //Measure current on each channel and handle any exceeding threshold
bool refreshScreen = ((millis() - displayUpdateTimer) > DISPLAY_UPDATE_INTERVAL); // update voltage and current information every second
if (menuMode == NORMAL)
{
processNormalMode(&refreshScreen);
}
else
{
processEditMode(&refreshScreen);
}
//Update screen if there are any changes
if (refreshScreen)
{
updateStatusScreen();
displayUpdateTimer = millis();
}
}
//In normal mode, only need to check for push buttons and rotary switch
void processNormalMode(bool* refreshScreen)
{
CHANNEL* c;
int switchState = getSwitchState();
if (switchState < NUM_OF_CHANNELS)
{
c = &channel[switchState];
//Only turn on channel if currently off otherwise turn it off.
switch (c->status)
{
case CHAN_OFF: c->status = CHAN_ON; break;
default: c->status = CHAN_OFF; break;
}
c->curMeasurementAvg = 0.0;
c->curMeasurementTotal = 0.0;
c->curMeasurementCount = 0;
c->curMeasurementHead = 0;
c->curMeasurementTail = 0;
setChannelLeds(c);
*refreshScreen = true;
noTone(SPEAKER); //Turn off any sounds if a button is pessed
}
else if (switchState == SW_ROTARY)
{
menuMode = (CURSOR_ENUM)((int)menuMode + 1);
cursorOn = true;
cursorUpdateTimer = millis();
rotaryDirection = 0;
*refreshScreen = true;
}
}
//In edit mode, only check rotary switch to select value and the encoder to change that value
void processEditMode(bool* refreshScreen)
{
CHANNEL* c;
//In edit mode the rotary switch will switch between modes
int switchState = getSwitchState();
if (switchState == SW_ROTARY)
{
menuMode = (menuMode == CHAN_4) ? NORMAL : (CURSOR_ENUM)((int)menuMode + 1);
rotaryDirection = 0;
*refreshScreen = true;
if (menuMode == NORMAL && eePromDirty)
{
//Update eeProm if there were changes to the settings
writeEepromData();
eePromDirty = false;
}
}
//Handle Flashing cursor
if ((millis() - cursorUpdateTimer) > CURSOR_TIMEOUT)
{
cursorOn = !cursorOn;
cursorUpdateTimer = millis();
*refreshScreen = true;
}
//Test for change in value
if (rotaryDirection != 0)
{
//Rotary encoder has been turned
switch (menuMode)
{
case TRIGGER:
ee.triggerDelay += rotaryDirection * TRIGGER_DELAY_INTERVAL;
ee.triggerDelay = min(max(ee.triggerDelay, 0),1000-TRIGGER_DELAY_INTERVAL);
updateTriggerDelay();
eePromDirty = true;
break;
default:
c = &channel[(int)menuMode - (int)CHAN_1];
c->curThreshold += rotaryDirection * CURRENT_THRESHOLD_INTERVAL;
c->curThreshold = min(max(c->curThreshold, 0.2),MAX_CURRENT_THRESHOLD);
ee.cuThreshold[c->hss] = c->curThreshold;
updateStatusLine(c, (cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
eePromDirty = true;
break;
}
rotaryDirection = 0;
}
}
/*-----------------------------------------------------------------------------------------
* MEASURE CURRENT
------------------------------------------------------------------------------------------*/
//Measure current on each channel and handle any exceeding threshold
void checkAllCurrent()
{
CHANNEL* c;
for(int i = 0; i < NUM_OF_CHANNELS; i++) // measure the current in all high-side switches
{
if (checkCurrent(&channel[i]))
{
if(!currentExceededFlag)
{
currentMeasurementTimer = millis(); // Reset timer
currentExceededFlag = true;
}
}
}
if(((millis() - currentMeasurementTimer) > ee.triggerDelay) && currentExceededFlag)
{
// Check the single outputs for overcurrent
float currentSum = 0.0;
for(int i = 0; i < NUM_OF_CHANNELS; i++) //Check the single outputs for overcurrent
{
c = &channel[i];
if (checkCurrent(c))
{
HSS.switchHxOff(c->hss); // If threshold was exceeded, switch HSS off
c->status = CHAN_OVR;
updateStatusLine(c, ST7735_BLACK);
tone(SPEAKER, OVR_TONE);
}
currentSum += c->curMeasurementAvg;
}
// check if summarized current exceeds limit
if (currentSum > ee.cuThresholdSum)
{
for(int i = 0; i < NUM_OF_CHANNELS; i++) //Check the single outputs for overcurrent
{
c = &channel[i];
HSS.switchHxOff(c->hss);
c->status = CHAN_OVR;
updateStatusLine(c, ST7735_BLACK);
tone(SPEAKER, ALL_TONE);
}
}
currentExceededFlag = false;
}
}
//Get the average current and return true if it exceeds the threshold
bool checkCurrent(CHANNEL* c)
{
if (c->status == CHAN_ON)
{
float readAmps = HSS.readIsx(c->hss);
if (c->curMeasurementCount == AMOUNT_MEASUREMENTS)
{
//Remove oldest value from running total
c->curMeasurementTotal = c->curMeasurementTotal - c->curMeasurement[c->curMeasurementTail];
c->curMeasurementTail = (c->curMeasurementTail + 1) & (AMOUNT_MEASUREMENTS - 1);
c->curMeasurementCount--;
}
//Add new value to running total
c->curMeasurement[c->curMeasurementHead] = readAmps;
c->curMeasurementHead = (c->curMeasurementHead + 1) & (AMOUNT_MEASUREMENTS - 1);
c->curMeasurementTotal = c->curMeasurementTotal + readAmps;
c->curMeasurementCount++;
c->curMeasurementAvg = c->curMeasurementTotal / c->curMeasurementCount;
if (c->curMeasurementAvg > c->curThreshold)
{
return true;
}
}
return false;
}
/*-----------------------------------------------------------------------------------------
* SPLASH SCREEN
------------------------------------------------------------------------------------------*/
//Show Infinion logo
void setupSplashScreen()
{
tft.fillScreen(ST7735_WHITE);
tft.setRotation(3);
tft.drawRGBBitmap(0,5,ImageBits,ImageWidth,ImageHeight);
tft.setTextColor(ST7735_BLACK);
tft.setTextSize(2);
drawCentreString("PROFET+2", 80, 85);
tft.setTextSize(1);
tft.setCursor(25, 110);
tft.println("Max Current:");
//Handle the setting of the maximum current
bool first = true;
unsigned long timeout = 0;
while (first || millis() < timeout)
{
if (first || rotaryDirection != 0)
{
//Rotary encoder has been turned
ee.cuThresholdSum += rotaryDirection * CURRENT_SUM_THRESHOLD_INTERVAL;
ee.cuThresholdSum = min(max(ee.cuThresholdSum, 1.0),99.9);
rotaryDirection = 0;
//Display the change
dtostrf(ee.cuThresholdSum, 2, 1, buf);
strcat(buf,"A ");
tft.setTextColor(ST7735_MAGENTA, ST7735_WHITE);
tft.setCursor(100, 110);
tft.println(buf);
//Restart timeout again
timeout = millis() + SLASH_SCREEN_TIMEOUT;
first = false;
}
yield();
}
writeEepromData(); //Write back any changes
}
//Draw a centred string
void drawCentreString(const char *buf, int x, int y)
{
int16_t x1, y1;
uint16_t w, h;
tft.getTextBounds(buf, x, y, &x1, &y1, &w, &h); //calc width of new string
tft.setCursor(x - w / 2, y);
tft.print(buf);
}
/*-----------------------------------------------------------------------------------------
* STATUS SCREEN
------------------------------------------------------------------------------------------*/
#define CHANNEL_X 5
#define STATE_X 30
#define BATTERY_X 38
#define CURRENT_X 72
#define THRESHOLD_X 119
#define TD_X 100
#define TIME_X 122
//Setup the static text
void setupStatusScreen()
{
tft.fillScreen(ST7735_BLACK);
tft.setRotation(3);
tft.drawRect(0, 0, 160, 16, ST7735_WHITE);
tft.drawRect(0, 20, 160, 108, ST7735_WHITE);
tft.setTextSize(1);
tft.setTextColor(ST7735_WHITE);
tft.setCursor(CHANNEL_X, LINE_1_Y);
tft.println("Batt:");
tft.setCursor(TD_X, LINE_1_Y);
tft.println("TD:");
tft.setTextColor(ST7735_WHITE);
tft.setCursor(CHANNEL_X, LINE_2_Y);
tft.println("#");
tft.setCursor(STATE_X, LINE_2_Y);
tft.println("State");
tft.setCursor(CURRENT_X, LINE_2_Y);
tft.println("Flow");
tft.setCursor(THRESHOLD_X, LINE_2_Y);
tft.println("Trig");
tft.setTextColor(ST7735_RED);
tft.setCursor(CHANNEL_X, LINE_3_Y);
tft.println("1.");
tft.setTextColor(ST7735_YELLOW);
tft.setCursor(CHANNEL_X, LINE_4_Y);
tft.println("2.");
tft.setTextColor(ST7735_GREEN);
tft.setCursor(CHANNEL_X, LINE_5_Y);
tft.println("3.");
tft.setTextColor(ST7735_CYAN);
tft.setCursor(CHANNEL_X, LINE_6_Y);
tft.println("4.");
}
//update the dynamic text
void updateStatusScreen()
{
updateBatteryVoltage();
updateTriggerDelay();
updateStatusLine(&channel[0],(menuMode == CHAN_1 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
updateStatusLine(&channel[1],(menuMode == CHAN_2 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
updateStatusLine(&channel[2],(menuMode == CHAN_3 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
updateStatusLine(&channel[3],(menuMode == CHAN_4 && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
}
//update the battery voltage
void updateBatteryVoltage()
{
tft.setTextColor(ST7735_MAGENTA, ST7735_BLACK);
tft.setCursor(BATTERY_X, LINE_1_Y);
dtostrf(HSS.readVss(), 2, 1, buf);
strcat(buf,"V");
spadr(buf,5);
tft.println(buf);
}
//update the trigger delay
void updateTriggerDelay()
{
tft.setTextColor(ST7735_MAGENTA, (menuMode == TRIGGER && cursorOn) ? ST7735_CURSOR : ST7735_BLACK);
tft.setCursor(TIME_X, LINE_1_Y);
sprintf(buf,"%dmS",ee.triggerDelay);
spadr(buf,5);
tft.println(buf);
}
//update a status line
void updateStatusLine(CHANNEL* c, uint32_t bkgndColor)
{
tft.setTextColor(c->color, ST7735_BLACK);
tft.setCursor(STATE_X, c->lineY);
tft.println(statusMessages[(int)c->status]);
tft.setCursor(CURRENT_X, c->lineY);
dtostrf(c->curMeasurementAvg, 2, 1, buf);
strcat(buf,"A");
spadr(buf,5);
tft.print(buf);
tft.setTextColor(c->color, bkgndColor);
tft.setCursor(THRESHOLD_X, c->lineY);
dtostrf(c->curThreshold, 2, 1, buf);
strcat(buf,"A");
spadr(buf,5);
tft.print(buf);
}
//Pad string right with spaces
// - p pointer to start of string
// - l length of final string
void spadr(char* p, int l)
{
int k = strlen(p);
int i = k;
for(; i < l; i++)
{
p[i] = ' ';
}
p[i] = '\0';
}
/*-----------------------------------------------------------------------------------------
* BUTTONS & ROTARY ENCODER
------------------------------------------------------------------------------------------*/
void setupButtons()
{
analogReference(VDD);
pinMode(SWITCHES,INPUT);
pinMode(ENC_A,INPUT);
pinMode(ENC_B,INPUT);
attachInterrupt(ENC_A, rotaryInterrupt, CHANGE);
}
// Interrupt Handler: Rotary encoder has moved
void rotaryInterrupt()
{
bool a = (digitalRead(ENC_A) == LOW);
bool b = (digitalRead(ENC_B) == LOW);
if (a != lastRotA)
{
lastRotA = a;
if (b != lastRotB)
{
lastRotB = b;
if (b)
{
rotaryDirection = (a == b) ? -1 : 1;
}
}
}
}
//Get state of switch, debounce and wait for release
// returns: 0-3 for channel switches, 98 for rotary switch, 99 when no switch pressed
int getSwitchState()
{
int result = SW_NONE;
int value = analogRead(SWITCHES);
if (value < 1000)
{
delay(10); //debounce
value = analogRead(SWITCHES);
if (value >= 750 && value < 900)
{
result = 3;
}
else if (value >= 600 && value < 750)
{
result = 2;
}
else if (value >= 400 && value < 600)
{
result = 1;
}
else if (value >= 200 && value < 400)
{
result = 0;
}
else if (value < 100)
{
result = SW_ROTARY;
}
//Wait for release
while (analogRead(SWITCHES) < 1000)
{
yield();
}
}
return result;
}
/*-----------------------------------------------------------------------------------------
* CHANNEL LEDS
------------------------------------------------------------------------------------------*/
void setupChannelLeds()
{
for (int i = 0; i < NUM_OF_CHANNELS; i++)
{
pinMode(channel[i].greenPin,OUTPUT);
pinMode(channel[i].redPin,OUTPUT);
setChannelLeds(&channel[i]);
}
}
//Set the LEDs to match the channel's status - OFF: no leds, ON: green, OVR: red
void setChannelLeds(CHANNEL* c)
{
switch (c->status)
{
case CHAN_OFF: digitalWrite(c->greenPin,HIGH); digitalWrite(c->redPin,HIGH); break;
case CHAN_ON: digitalWrite(c->greenPin,LOW); digitalWrite(c->redPin,HIGH); break;
default: digitalWrite(c->greenPin,HIGH); digitalWrite(c->redPin,LOW); break;
}
}
#pragma once
#define ImageWidth 160
#define ImageHeight 71
static const unsigned int ImageBits[] PROGMEM = {
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBF,
0xFF7D, 0xFF5D, 0xFF1C, 0xFF1C, 0xFEDB, 0xFEDB, 0xFE9A, 0xFE9B,
0xFE9A, 0xFE7A, 0xFE79, 0xFE7A, 0xFE7A, 0xFE9A, 0xFEBB, 0xFF1C,
0xFF3C, 0xFF7E, 0xFF9E, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBE, 0xFF9E, 0xFF5D,
0xFEBB, 0xF5F8, 0xFD35, 0xF411, 0xF2AD, 0xE989, 0xF16A, 0xE949,
0xF129, 0xE8E8, 0xF16A, 0xF24B, 0xF30E, 0xF36F, 0xF3F1, 0xF4F4,
0xFDD7, 0xFE59, 0xFEFC, 0xFF5D, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFF7D, 0xFE7A, 0xF515, 0xF34F, 0xEAAC, 0xF24B, 0xE9A9, 0xF108,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE969, 0xF1EA, 0xEA4B, 0xF452,
0xF5B7, 0xFEDB, 0xFF9E, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xFEBB, 0xFD76, 0xF432, 0xF34F, 0xE9CA,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF109, 0xF411, 0xFDB7, 0xFEDB, 0xFF5E, 0xFFBF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xFE9A,
0xF555, 0xF3D0, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEB2E, 0xF515, 0xF618, 0xFF1C,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xFF3D, 0xFDF8, 0xF34E, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF30E, 0xF472, 0xFE39, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
0xFF1C, 0xF4B3, 0xEA2B, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE969, 0xF28C, 0xF515, 0xFF5D,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
0xB5FB, 0x7498, 0x7498, 0x9539, 0xF79F, 0xFFFF, 0xFFBF, 0xF30E,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8E8, 0xF26C, 0xF5B7, 0xFF7E, 0xFFDF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5E, 0x5C18,
0x0336, 0x0356, 0x0336, 0x0357, 0x2376, 0xCE9C, 0xFFFF, 0xFDD8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF2EE,
0xF5B7, 0xFF3D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7C99, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x3397, 0xF79F, 0xFFFF,
0xF1CA, 0xE8C8, 0xF0C8, 0xE8C8, 0xF2CD, 0xF514, 0xFF1C, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73E, 0x0336, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0xADFB, 0xFFFF,
0xF4D4, 0xF1CA, 0xF3D0, 0xFEFC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3B, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x7C99, 0xFFFF,
0xFF3D, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFEBB, 0xF4D4, 0xFFFF, 0xC67C, 0x0336, 0x0357,
0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x84D9, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFF5D, 0xF472, 0xF0C8, 0xF24B, 0xFFDF, 0xF79F, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0xD6BD, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFDF8,
0xE969, 0xF0C8, 0xE8C8, 0xF0C8, 0xFE59, 0xFFFF, 0xA59A, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x6438, 0xF7DF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xDEFD, 0x84D9, 0x1356, 0x1356, 0x5C17, 0xB61B, 0xEF9E, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF5D, 0xF32E, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF28C, 0xFF9E, 0xFFFF, 0x9D7A,
0x3397, 0x0336, 0x0357, 0x1B56, 0x7479, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA5BA,
0x1B57, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF,
0xFFFF, 0xFFFF, 0xCE9D, 0x84D9, 0xA5BB, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF5D7, 0xF1CA, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF3B0, 0xFFBE, 0xFFFF,
0xEF7E, 0xD6DD, 0xCE9C, 0xEF5E, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357,
0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x9D5A, 0xFFFF,
0xFFFF, 0xA59A, 0x0336, 0x0357, 0x0336, 0x53F7, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xF4B3, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF129, 0xFE18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7478, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0B56, 0xEF5E, 0xFFFF,
0xF79F, 0x1B56, 0x0357, 0x0336, 0x0357, 0x0336, 0xC65C, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFF9E, 0xEB4E, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF3D0, 0xFF3D, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0356,
0x0336, 0x0357, 0x9539, 0xFFFF, 0xFFDF, 0xCEBD, 0xFFDF, 0xFFFF,
0xEF5E, 0x1B57, 0x0336, 0x0356, 0x0336, 0x0357, 0xADDA, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFF7E, 0xF26C, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE929, 0xFCF5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFDF, 0xFFDF, 0xF79F, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336,
0x0357, 0x2377, 0xEF7E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x1B56, 0xEF7F, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E,
0xEA4B, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE969, 0xFE7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x6C58, 0x53F7, 0x3B97, 0x1357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3B, 0x0336, 0x0357,
0x0336, 0x3397, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x6437, 0x2B77, 0x3396, 0xCEBD, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xF24B,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF1EA,
0xFF1C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB61B, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xEAAC, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEA2B, 0xFF1C,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE3C, 0x0336, 0x0356,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF411, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF1EA, 0xFF3D, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xFFDF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFDF, 0xF7BF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC65C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xEF7F, 0xEF5E, 0xF79F, 0xFFDF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xEF7E, 0xEF5E,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xF79F, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF596, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE908, 0xFEDB, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0xADDA, 0x5C18, 0x3396, 0xB61B, 0xFFFF, 0xFFDF,
0xADDA, 0x4BD7, 0x3396, 0x3BB7, 0x4BD7, 0xCE9C, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8, 0x53F7, 0x0336, 0x0357,
0x0336, 0x1356, 0x6458, 0x7478, 0x6C78, 0x7CB9, 0xF7BF, 0xFFFF,
0xFFFF, 0xE73E, 0x7CB8, 0x5C18, 0x43D7, 0x6C58, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xE73E, 0x9D7A, 0x53F7, 0x2B76, 0xE73E,
0xFFFF, 0xF7BF, 0x9559, 0x4BD7, 0x3396, 0x3BB7, 0x5417, 0xDF1E,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x6458, 0x3397, 0x0B36, 0x1B57, 0x2B76, 0x53F7,
0xD6DC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xDF1E, 0x5417, 0x3397, 0x0B36, 0x1357,
0x3376, 0x6438, 0xDF1D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xD6DD, 0x953A, 0x4BD7, 0x3B97, 0xF7BF, 0xFFFF,
0xE75E, 0x8CF9, 0x43B7, 0x3397, 0x3B96, 0x6C78, 0xEF5E, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFF1C, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8E8, 0xFE18, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x8D19, 0x0357, 0x0336, 0x0357, 0x8D19, 0xE73E, 0x53F7,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0xB5FB, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4BD7, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x4BD7, 0x0357, 0x0336, 0x0357, 0xB5FB,
0xC67C, 0x3BB7, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x1B56,
0xD6BD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xD6DD, 0x2B76, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0xB5FB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xBE3C, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x1357, 0xBE3B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF7BF, 0x43B7, 0x0336, 0x0357, 0x0336, 0xDEFD, 0xADDB,
0x3397, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x3B97, 0xEF5E,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xF3B0, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF3B0, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xC65C, 0x0336, 0x0356, 0x0336, 0x43D7, 0x1356, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x2B76, 0xFFDF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0357, 0x0336, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x84D9, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8, 0x0336, 0x0357, 0x0336, 0x53F7,
0x1B56, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73E,
0x0B36, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
0x0336, 0x0357, 0xCE9C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0xCE9C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x53F7, 0x0356, 0x0336, 0x0357, 0x6437, 0x1356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x7498,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFEBB, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF1AA, 0xFF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xDEFD, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0xCE9C,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4BD8, 0x1356, 0x0357, 0x0336,
0x0357, 0x0336, 0x1B57, 0x1B56, 0x1357, 0xC65C, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xA5BA, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x1B57, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7CB8,
0x0357, 0x0336, 0x0357, 0x53F7, 0xBE1C, 0xBE3C, 0x7C99, 0x0336,
0x0357, 0x0336, 0x5C18, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x53F7, 0x0357, 0x0336, 0x0357, 0x1B56, 0x84F9, 0x7CB8,
0x0357, 0x0336, 0x0357, 0x0336, 0x53F8, 0xFFDF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x6C78, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x43B7,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xEAED, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xF452, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x0B36, 0x0357, 0x0336, 0x0356, 0x0336, 0x6438,
0xD6FD, 0xFFDF, 0xB61B, 0x1357, 0x0336, 0x0356, 0x0336, 0xADDB,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xC65C, 0x0336, 0x0357,
0x0336, 0x3397, 0xEF7E, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xC65C, 0x0336, 0x0356, 0x0336, 0x0357,
0x0336, 0x7CD9, 0xE75E, 0xF7BF, 0x8D19, 0x0356, 0x0336, 0x0357,
0x0336, 0xDF1E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357,
0x0336, 0x0356, 0x2376, 0xEF7F, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438,
0x0336, 0x0356, 0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xBE5B, 0x0356, 0x0336, 0x0357, 0x2356, 0xDF1E, 0xFFFF, 0xFFFF,
0xD6DD, 0x1B57, 0x0336, 0x0357, 0x0336, 0xBE1B, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x8D19, 0x0357, 0x0336, 0x0356, 0x0336, 0x1B57,
0x9539, 0xF79F, 0xEF7E, 0x7478, 0x0336, 0x0356, 0x0336, 0x2377,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFF5D, 0xF149, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xFF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x1B57, 0x0336, 0x0357, 0x0336, 0x8CF9, 0xFFDF,
0xFFFF, 0xFFFF, 0xFFDF, 0x4BD7, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCE7C, 0x0357, 0x0336, 0x0357, 0x0336,
0xBE1B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3397, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8D1A, 0x0336,
0x0357, 0x0336, 0x84D9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE1B,
0x0357, 0x0336, 0x0357, 0x7CB9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x6C58, 0x0336, 0x0357, 0x0336, 0x7CD9, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x6C58, 0x0357, 0x0336, 0x0357, 0x5417, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59B, 0x0336, 0x0357, 0x0336, 0x1B57, 0xCEBD,
0xFFFF, 0xFFFF, 0xFFFF, 0xEF5E, 0x0357, 0x0336, 0x0357, 0x1356,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFD35, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF36F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xF7DF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x53F7, 0x0336, 0x0357, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x53F7,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x53F7, 0x0336, 0x0356,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0356,
0x0336, 0x0357, 0xC67C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE75E,
0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF, 0xFFFF, 0xFFFF, 0xF7BF,
0x3B97, 0x0357, 0x0336, 0x0356, 0xD6BD, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xC67C, 0x0336, 0x0356, 0x0336, 0x3397, 0xEF9E, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x5C17, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x1356, 0x0357, 0x0336, 0x0356,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF20B, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xF515, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336,
0x0357, 0x0336, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF,
0x0357, 0x0336, 0x0357, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xDF1D,
0x0357, 0x0336, 0x0357, 0x0336, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x0357, 0x0336, 0x0357, 0x0336, 0xE73E, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFF5D, 0xF129, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xFDF8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0357,
0x0336, 0x0356, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x0336, 0x0356, 0x0336, 0x2B77, 0xEF7E, 0xFFFF, 0xFFFF, 0xC65C,
0x0336, 0x0356, 0x0336, 0x43B7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x0336, 0x0357, 0x0336, 0x0356, 0xBE5B, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFEFC, 0xE8E8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xFE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357, 0x0336,
0x0357, 0x0336, 0x7479, 0x7498, 0x7499, 0x7498, 0x7C99, 0x7478,
0x0357, 0x0336, 0x0357, 0x2377, 0xEF7F, 0xFFFF, 0xFFFF, 0x9D7A,
0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x3B97, 0x0336, 0x0357, 0x0336, 0xADDB, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xFE7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFD, 0x0336, 0x0356,
0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356,
0x0336, 0x0357, 0x0336, 0x2377, 0xE75E, 0xFFFF, 0xFFFF, 0x8D19,
0x0336, 0x0357, 0x0336, 0x5417, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x3B96, 0x0356, 0x0336, 0x0357, 0x9559, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFE9A, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xFDD8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x0B56, 0xEF5E, 0xFFFF, 0xFFFF, 0x7CB8,
0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x43D7, 0x0336, 0x0357, 0x0336, 0x8D19, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF515, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6DD, 0x0336, 0x0357,
0x0336, 0x0356, 0x6437, 0x6C58, 0x6437, 0x6458, 0x6438, 0x6C58,
0x6437, 0x6458, 0x6438, 0x6C58, 0xE75E, 0xFFFF, 0xFFFF, 0x8D19,
0x0336, 0x0356, 0x0336, 0x5C18, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x3B97, 0x0357, 0x0336, 0x0356, 0x9539, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFEDB, 0xE8E8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xF3B0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1D, 0x0357, 0x0336,
0x0357, 0x0336, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D5A,
0x0357, 0x0336, 0x0357, 0x53F7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x3397, 0x0336, 0x0357, 0x0336, 0xA59B, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFF3D, 0xF129, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xFFBE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0x0336, 0x0356,
0x0336, 0x0357, 0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBE1B,
0x0336, 0x0357, 0x0336, 0x43D7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0x0336, 0x0356, 0x0336, 0x0357, 0xBE3B, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFDF, 0xE949, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xFD97, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3BB7, 0x0336,
0x0357, 0x0336, 0xE71E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6DD,
0x0357, 0x0336, 0x0357, 0x1B56, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x0357, 0x0336, 0x0357, 0x0336, 0xDF1E, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF472, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xEB0D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357,
0x0336, 0x0356, 0xADBA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F,
0x2356, 0x0356, 0x0336, 0x0357, 0xDF1D, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x2B77, 0xEF9E, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFEDB, 0xF109, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xFE9A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8CF9, 0x0336,
0x0357, 0x0336, 0x43B7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF7BF, 0xDEFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF,
0x53F8, 0x0336, 0x0357, 0x0336, 0x9D5A, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x7CB8, 0x0357, 0x0336, 0x0357, 0x4BF7, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFDF, 0xEA6C, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF28C, 0xFFBE, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0357, 0x0336, 0x0356, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x2356, 0x0356, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0357, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0356,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9D, 0x0336, 0x0356, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBD, 0x0336, 0x0357, 0x0336, 0x5417,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0356,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6FD, 0x0356,
0x0336, 0x0357, 0x0336, 0x9D7A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xEF5E, 0x6438, 0x5C17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x8D19, 0x0357, 0x0336, 0x0356, 0x3396, 0xF79F, 0xFFFF, 0xFFFF,
0xEF7E, 0x3397, 0x0336, 0x0356, 0x0336, 0xA59A, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0356, 0x0336, 0x0357, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B97, 0x0357, 0x0336, 0x0356,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFDF8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xFD56, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2377, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6C78,
0x0357, 0x0336, 0x0357, 0x0336, 0x7499, 0xADDB, 0xB5FB, 0x84F9,
0x3397, 0x0336, 0x0357, 0xC65C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xF77F, 0x0336, 0x0357, 0x0336, 0x0357, 0x5C18, 0xC65C, 0xBE3B,
0x5C18, 0x0336, 0x0357, 0x0336, 0x3397, 0xF79F, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xF30E, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xFEDB, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x2B76, 0x0356, 0x0336, 0x0357, 0xB61B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF9F, 0x2356, 0x0357, 0x0336, 0x2377, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6438, 0x0336, 0x0356, 0x0336, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0336, 0x0357,
0x0336, 0x3397, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0336, 0x0357, 0x0336, 0x5C18, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x0336, 0x0356, 0x0336, 0x5C18,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6438, 0x0336, 0x0357,
0x0336, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1E,
0x0336, 0x0356, 0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357,
0x0336, 0x0356, 0x0336, 0x53F8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0x953A, 0x0336, 0x0357, 0x0336, 0x0356, 0x0336, 0x0357,
0x0336, 0x0356, 0x0336, 0x0357, 0xA59A, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xA59A, 0x0357, 0x0336, 0x0356, 0x6437, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x3B96, 0x0356, 0x0336, 0x0357,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFE9A, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE9EA, 0xFF7E, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x3397, 0x0336, 0x0357, 0x0336, 0xBE3C, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xEF7E, 0x2B77, 0x0336, 0x0357, 0x2376, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x5C18, 0x0357, 0x0336, 0x0357, 0x9D7A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC67C, 0x0357, 0x0336,
0x0357, 0x3377, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCE9C, 0x0357, 0x0336, 0x0357, 0x5C17, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xCEBC, 0x0357, 0x0336, 0x0357, 0x53F7,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5C17, 0x0357, 0x0336,
0x0357, 0xD6DD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xC67C, 0x0B56, 0x0357, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x6438, 0xEF7E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF7BF, 0x6438, 0x0336, 0x0357, 0x0336, 0x0357, 0x0336,
0x0357, 0x0336, 0x0357, 0x7CB9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBB, 0x0336, 0x0357, 0x0336, 0x6458, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x43B7, 0x0336, 0x0357, 0x0336,
0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF515, 0xF0C8, 0xE8C8, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xEB0D, 0xFFBF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0x4BD7, 0x3BB7, 0x3B96, 0x3397, 0xBE3B, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xF79F, 0x43B7, 0x3BB7, 0x3B97, 0x4BD7, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0x6C78, 0x3B97, 0x3BB7, 0x3396, 0xA59A,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE7C, 0x3376, 0x3BB7,
0x3B97, 0x4BD7, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xCEBD, 0x3B96, 0x3BB7, 0x3B97, 0x6C58, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BD, 0x3B97, 0x43B7, 0x3B96, 0x6C58,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x6C78, 0x3B96, 0x3BB7,
0x3396, 0xDEDD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xDEFD, 0x4BF7, 0x1B57, 0x0336, 0x0357, 0x0336, 0x0356,
0x3B97, 0x9D7A, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xF7BF, 0x7CB9, 0x2356, 0x0357, 0x0336, 0x0356,
0x0336, 0x3397, 0x9559, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xADBA, 0x3BB7, 0x3B97, 0x43B7, 0x6C78, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x53F7, 0x3BB7, 0x3B96, 0x3BB7,
0xEF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF34F, 0xF0C8, 0xE8C8,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xF34F,
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xF7BF, 0xF79F, 0xF7BF, 0xF79F, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFBF, 0xF7BF, 0xFFBF, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF7BF, 0xF79F, 0xF7BF, 0xF7BF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xF79F,
0xF7BF, 0xF79F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFDF, 0xF7BF, 0xF79F, 0xF7BF, 0xF7BF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBF, 0xF7BF, 0xFFBF, 0xF7BF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF7BF, 0xF79F,
0xF7BF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xE73E, 0xC65C, 0xADBB, 0xBE1B, 0xDEFD,
0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xC65C, 0xA59A, 0xA5BA,
0xCE9D, 0xEF7F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFDF, 0xF7BF, 0xFFBF, 0xF7BF, 0xFFDF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xF79F, 0xF7BF, 0xF79F,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF9E, 0xEA4B, 0xF0C8,
0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8,
0xEB2E, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xF5F8, 0xFFDF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7E, 0xF26C,
0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8, 0xF0C8, 0xE8C8,
0xF0C8, 0xEA4B, 0xFF1D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
...
This file has been truncated, please download it to see its full contents.
/**
* EEPROM support
* John Bradnam (jbrad2089@gmail.com)
*
* 2021-11-15 - Updated for Electronic Fuse
*
*/
#pragma once
//Uncomment to reset EEPROM data
//#define RESET_EEPROM
#ifdef __AVR_ATtiny1614__
#include <avr/eeprom.h>
#else
#include <EEPROM.h>
#endif
//EEPROM handling
#define EEPROM_ADDRESS 0
#define EEPROM_MAGIC 0x0DAD0BAD
typedef struct {
uint32_t magic;
int triggerDelay; // Time in milliseconds, after which the HSS switches off after an overcurrent event.
float cuThresholdSum; // [A] this should be the maximum current which can be delivered by your power supply
float cuThreshold[5]; // Stores the threshold values, at which the HSS switches off (configurable via the LCD)
} EEPROM_DATA;
volatile EEPROM_DATA ee; //Current EEPROM settings
//-----------------------------------------------------------------------------------
// Forward references
void writeEepromData();
void readEepromData();
//---------------------------------------------------------------
//Write the EepromData structure to EEPROM
void writeEepromData()
{
//This function uses EEPROM.update() to perform the write, so does not rewrites the value if it didn't change.
#ifdef __AVR_ATtiny1614__
eeprom_update_block (( void *) &ee , ( const void *) EEPROM_ADDRESS, sizeof(ee));
#else
EEPROM.put(EEPROM_ADDRESS,ee);
#endif
}
//---------------------------------------------------------------
//Read the EepromData structure from EEPROM, initialise if necessary
void readEepromData()
{
//Eprom
#ifdef __AVR_ATtiny1614__
eeprom_read_block (( void *) &ee , ( const void *) EEPROM_ADDRESS, sizeof(ee));
#else
EEPROM.get(EEPROM_ADDRESS,ee);
#endif
#ifndef RESET_EEPROM
if (ee.magic != EEPROM_MAGIC)
#endif
{
ee.magic = EEPROM_MAGIC;
ee.triggerDelay = 100;
ee.cuThresholdSum = 20.0;
ee.cuThreshold[0] = 0.0;
ee.cuThreshold[1] = 1.0;
ee.cuThreshold[2] = 1.0;
ee.cuThreshold[3] = 1.0;
ee.cuThreshold[4] = 1.0;
writeEepromData();
}
}
Comments