Compare commits

...

27 Commits

Author SHA1 Message Date
Elías Angulo 35dc364f6c
Merge 67e3735bae into 58e909afed 2024-07-22 04:21:00 +00:00
Elías Angulo 67e3735bae
Update v3.actions.yml 2024-07-22 06:20:57 +02:00
Elías Angulo a29002514d
Update main.actions.yml 2024-07-22 06:20:34 +02:00
Elías Angulo 3d8236aac2
Update dev.actions.yml 2024-07-22 06:20:16 +02:00
Elías Angulo 4abca7373d
Update main.actions.yml 2024-07-22 06:16:57 +02:00
Elías Angulo 735c0751c9
Update v3.actions.yml 2024-07-22 06:16:24 +02:00
Elías Angulo 83cd39e1cc
Update dev.actions.yml 2024-07-22 06:14:53 +02:00
Elías A. Angulo Klein c7b67f31b5 Merge branch 'master' of https://github.com/crossplatformdev/Watchy 2024-07-22 03:54:03 +02:00
Elías A. Angulo Klein 211abb2ab2 Added PipBoy 2024-07-22 02:54:49 +02:00
Elías Angulo fb1c5a9b38
Merge pull request #6 from crossplatformdev/custom
Custom
2024-07-22 02:41:57 +02:00
Elías A. Angulo Klein ddf69e79c7 Make gmtOffset effectively displayed. 2024-07-22 02:41:06 +02:00
Elías A. Angulo Klein f63f561b52 Formatting and some better management of timezones array 2024-07-22 02:39:43 +02:00
Elías Angulo 2a2fb3e5c2
Merge pull request #5 from crossplatformdev/moonphase
Moonphase
2024-07-22 00:25:49 +02:00
Elías A. Angulo Klein 0422175d12 Added Moon Phase menu app. 2024-07-22 00:18:51 +02:00
Elías Angulo c515c75811
Merge pull request #4 from crossplatformdev/master
Merge
2024-07-21 22:37:16 +02:00
Elías A. Angulo Klein 261390a3fb Added MoonPhase library 2024-07-21 22:05:30 +02:00
SQFMI 58e909afed Merge branch 'master' into dev 2024-07-04 14:41:41 -04:00
sqfmi a07903f7b2 Merge branch 'master' into dev 2024-04-02 14:25:06 -04:00
sqfmi ef2d57f737 Merge branch 'dev' of https://github.com/sqfmi/Watchy into dev 2024-04-02 14:19:35 -04:00
sqfmi fbdaacd287 Merge branch 'master' into dev 2024-04-02 14:18:46 -04:00
SQFMI 99cacd26a9
Merge pull request #233 from Sudrien/master
Switch from CityID to Lat an Lon, expose sunrise and sunset
2024-04-02 14:16:04 -04:00
SQFMI b90b4a1af1 removed binaries 2023-04-29 12:35:05 -04:00
SQFMI 8d0ca659c9
Merge pull request #227 from wjgeorge/dev
remove old binaries
2023-04-29 12:31:14 -04:00
wjgeorge 9a383133b3 Merge branch 'dev' of https://github.com/wjgeorge/Watchy into dev 2023-04-28 21:54:52 -04:00
wjgeorge d312d2ba29 remove old binaries fixes #224 2023-04-28 21:54:03 -04:00
SQFMI ffc7de15b8 Add WiFi info to About Watchy 2023-04-28 15:33:15 -04:00
SQFMI 9c50085077 Add offline sensor read icon
Added new icon to indicate internal sensor reading when not connected to WiFi
2023-04-28 14:59:41 -04:00
38 changed files with 3341 additions and 68 deletions

View File

@ -16,7 +16,7 @@ jobs:
with:
arduino-board-fqbn: esp32:esp32:watchy:Revision=v20,PartitionScheme=min_spiffs,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-platform: esp32:esp32@2.0.17
arduino-platform: esp32:esp32@3.0.3
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
set-build-path: true
- uses: actions/upload-artifact@v3

View File

@ -16,7 +16,7 @@ jobs:
with:
arduino-board-fqbn: esp32:esp32:watchy:Revision=${{ matrix.board-revisions }},PartitionScheme=huge_app,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-platform: esp32:esp32@2.0.17
arduino-platform: esp32:esp32@3.0.3
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
set-build-path: true
- name: Rename binaries with board revision
@ -36,4 +36,4 @@ jobs:
- uses: softprops/action-gh-release@v1
with:
name: "Watchy Arduino Library ${{ github.ref_name }}"
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin

View File

@ -16,7 +16,7 @@ jobs:
with:
arduino-board-fqbn: esp32:esp32:esp32s3:FlashSize=8M,PartitionScheme=default_8MB,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-platform: esp32:esp32@2.0.17
arduino-platform: esp32:esp32@3.0.3
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
set-build-path: true
- name: Rename binaries with board revision
@ -36,4 +36,4 @@ jobs:
- uses: softprops/action-gh-release@v1
with:
name: "Watchy Arduino Library ${{ github.ref_name }}"
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,192 @@
#include "WatchyPipBoy.h"
#define DARKMODE true
#define STEPSGOAL 5000
const uint8_t WEATHER_ICON_WIDTH = 48;
const uint8_t WEATHER_ICON_HEIGHT = 32;
RTC_DATA_ATTR uint8_t vaultBoyNum;
void WatchyPipBoy::drawWatchFace(){
//top menu bar
display.fillScreen(DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.setFont(&monofonto8pt7b);
display.setTextColor(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.setCursor(22, 14);
display.print("STAT INV DATA MAP");
display.drawBitmap(0, 10, menubar, 200, 9, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
//bottom text
display.setFont(&monofonto8pt7b);
display.setCursor(10, 195);
display.println("PIP-BOY 3000 ROBCO IND.");
drawTime();
drawDate();
drawSteps();
drawWeather();
drawBattery();
// display.drawBitmap(120, 77, WIFI_CONFIGURED ? wifi : wifioff, 26, 18, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
// if(BLE_CONFIGURED){
// display.drawBitmap(100, 75, bluetooth, 13, 21, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
// }
}
void WatchyPipBoy::drawTime(){
//draw random vault boy every 15mins
if(currentTime.Minute % 15 == 0){
vaultBoyNum = random(0, 3);
}
switch(vaultBoyNum){
case 0:
display.drawBitmap(70, 50, vaultboy, 57, 100, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
break;
case 1:
display.drawBitmap(70, 50, vaultboypoint, 57, 100, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
break;
case 2:
display.drawBitmap(60, 50, vaultboysmile, 67, 100, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
break;
}
//time border
display.drawLine(137, 28, 200, 28, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.drawLine(137, 28, 137, 132, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.drawLine(137, 132, 157, 132, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.drawLine(180, 132, 200, 132, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
//draw time
display.setFont(&monofonto28pt7b);
display.setCursor(141, 75);
int displayHour;
if(HOUR_12_24==12){
displayHour = ((currentTime.Hour+11)%12)+1;
} else {
displayHour = currentTime.Hour;
}
if(displayHour < 10){
display.print("0");
}
display.print(displayHour);
display.setCursor(141, 125);
if(currentTime.Minute < 10){
display.print("0");
}
display.print(currentTime.Minute);
//AMPM
display.setFont(&monofonto8pt7b);
display.setCursor(160, 140);
display.print(currentTime.Hour < 11 ? "AM" : "PM");
}
void WatchyPipBoy::drawDate(){
display.setFont(&monofonto10pt7b);
int16_t x1, y1;
uint16_t w, h;
String dayOfWeek = dayStr(currentTime.Wday);
dayOfWeek.toUpperCase();
display.setTextColor(DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
display.getTextBounds(dayOfWeek, 7, 42, &x1, &y1, &w, &h);
display.setCursor(7, 42);
display.fillRect(x1-2, y1-2, w+4, h+4, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.print(dayOfWeek);
display.setFont(&monofonto10pt7b);
display.setTextColor(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.setCursor(7, 62);
display.print(monthShortStr(currentTime.Month));
display.print(" ");
display.print(currentTime.Day);
display.setCursor(7, 78);
display.print(tmYearToCalendar(currentTime.Year));
}
void WatchyPipBoy::drawSteps(){
// reset step counter at midnight
if (currentTime.Hour == 0 && currentTime.Minute == 0){
sensor.resetStepCounter();
}
//draw progress bar
uint32_t stepCount = sensor.getCounter();
uint8_t progress = (uint8_t)(stepCount * 100.0 / STEPSGOAL);
progress = progress > 100 ? 100 : progress;
display.drawBitmap(60, 155, gauge, 73, 10, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.fillRect(60+13, 155+5, (progress/2)+5, 4, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
//show step count
display.setFont(&monofonto8pt7b);
display.setTextColor(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.setCursor(150, 160);
display.print("STEPS");
display.setCursor(150, 175);
display.print(stepCount);
}
void WatchyPipBoy::drawBattery(){
display.drawBitmap(10, 150, battery, 37, 21, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.fillRect(15, 155, 27, 11, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);//clear battery segments
int8_t batteryLevel = 0;
float VBAT = getBatteryVoltage();
if(VBAT > 4.1){
batteryLevel = 3;
}
else if(VBAT > 3.95 && VBAT <= 4.1){
batteryLevel = 2;
}
else if(VBAT > 3.80 && VBAT <= 3.95){
batteryLevel = 1;
}
else if(VBAT <= 3.80){
batteryLevel = 0;
}
for(int8_t batterySegments = 0; batterySegments < batteryLevel; batterySegments++){
display.fillRect(15 + (batterySegments * 9), 155, 7, 11, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
}
}
void WatchyPipBoy::drawWeather(){
weatherData currentWeather = getWeatherData();
int8_t temperature = currentWeather.temperature;
int16_t weatherConditionCode = currentWeather.weatherConditionCode;
display.setFont(&monofonto10pt7b);
display.setTextColor(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
display.setCursor(12, 133);
display.print(temperature);
display.print(currentWeather.isMetric ? "C" : "F");
const unsigned char* weatherIcon;
//https://openweathermap.org/weather-conditions
if(weatherConditionCode > 801){//Cloudy
weatherIcon = cloudy;
}else if(weatherConditionCode == 801){//Few Clouds
weatherIcon = cloudsun;
}else if(weatherConditionCode == 800){//Clear
weatherIcon = sunny;
}else if(weatherConditionCode >=700){//Atmosphere
weatherIcon = atmosphere;
}else if(weatherConditionCode >=600){//Snow
weatherIcon = snow;
}else if(weatherConditionCode >=500){//Rain
weatherIcon = rain;
}else if(weatherConditionCode >=300){//Drizzle
weatherIcon = drizzle;
}else if(weatherConditionCode >=200){//Thunderstorm
weatherIcon = thunderstorm;
}else
return;
display.drawBitmap(5, 85, weatherIcon, WEATHER_ICON_WIDTH, WEATHER_ICON_HEIGHT, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
}

View File

@ -0,0 +1,23 @@
#ifndef WATCHY_PIP_BOY_H
#define WATCHY_PIP_BOY_H
#include <Watchy.h>
#include "monofonto28pt7b.h"
#include "monofonto10pt7b.h"
#include "monofonto8pt7b.h"
#include "monofonto6pt7b.h"
#include "img.h"
#include "icons.h"
class WatchyPipBoy : public Watchy{
using Watchy::Watchy;
public:
void drawWatchFace();
void drawTime();
void drawDate();
void drawSteps();
void drawWeather();
void drawBattery();
};
#endif

Binary file not shown.

View File

@ -0,0 +1,176 @@
// 'battery', 37x21px
const unsigned char battery [] PROGMEM = {
0x3f, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0,
0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0x00,
0x00, 0x00, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00,
0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00,
0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0xf8,
0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x7f,
0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0x80
};
// 'bluetooth', 13x21px
const unsigned char bluetooth [] PROGMEM = {
0x1f, 0xc0, 0x3f, 0xe0, 0x7f, 0xf0, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0x78, 0xdd, 0x38, 0xcd, 0x98,
0xe5, 0x38, 0xf0, 0x78, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0x78, 0xe5, 0x38, 0xcd, 0x98, 0xfd, 0x38,
0xfc, 0x78, 0xfc, 0xf8, 0x7d, 0xf0, 0x3f, 0xe0, 0x1f, 0xc0
};
// 'celsius', 26x20px
const unsigned char celsius [] PROGMEM = {
0x3f, 0x80, 0x1f, 0xc0, 0x7f, 0xc0, 0x3f, 0xc0, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00,
0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00,
0xc0, 0x60, 0x60, 0x00, 0xff, 0xc0, 0x40, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x3f, 0xc0
};
// 'fahrenheit', 26x20px
const unsigned char fahrenheit [] PROGMEM = {
0x3f, 0x80, 0x1f, 0xc0, 0x7f, 0xc0, 0x3f, 0xc0, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00,
0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00,
0xc0, 0x60, 0x60, 0x00, 0xff, 0xc0, 0x7f, 0xc0, 0x7f, 0x80, 0x3f, 0xc0, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'cloudsun', 48x32px
const unsigned char cloudsun [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x84, 0x40, 0x00, 0x00, 0x00, 0x10, 0x44, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00,
0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
0x00, 0x00, 0x00, 0x31, 0x80, 0x61, 0x00, 0x07, 0xe0, 0x19, 0x00, 0x32, 0x00, 0x38, 0x38, 0x02,
0x00, 0x10, 0x00, 0x60, 0x04, 0x02, 0x00, 0x10, 0x00, 0x80, 0x03, 0xf2, 0x00, 0x10, 0x01, 0x00,
0x01, 0x9e, 0x00, 0x10, 0x03, 0x00, 0x00, 0x03, 0x00, 0x10, 0x02, 0x00, 0x00, 0x01, 0x80, 0x10,
0x02, 0x00, 0x00, 0x00, 0x80, 0x32, 0x04, 0x00, 0x00, 0x00, 0x40, 0x61, 0x04, 0x00, 0x00, 0x00,
0x70, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x08, 0x60, 0x00,
0x00, 0x00, 0x01, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0xc2, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0,
0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00
};
// 'cloudy', 48x32px
const unsigned char cloudy [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00,
0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x00, 0x01, 0x80, 0x00, 0x3f,
0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00,
0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00,
0x04, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00,
0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00,
0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02,
0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00,
0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x00,
0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe0
};
// 'rain', 48x32px
const unsigned char rain [] PROGMEM = {
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00,
0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00,
0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80,
0x00, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x21, 0x08, 0x42, 0x10, 0x00, 0x00, 0x42, 0x10, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x84, 0x21, 0x00, 0x00, 0x04, 0x21,
0x08, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x21, 0x08, 0x00, 0x00
};
// 'snow', 48x32px
const unsigned char snow [] PROGMEM = {
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x20,
0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0x02, 0x40, 0x00, 0x00, 0x02, 0x81, 0x02, 0x80, 0x00,
0x00, 0x01, 0x81, 0x03, 0x00, 0x00, 0x00, 0x07, 0x81, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x04,
0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x80,
0x09, 0x20, 0x04, 0x00, 0x00, 0x40, 0x05, 0x40, 0x08, 0x00, 0x00, 0x20, 0x03, 0x80, 0x10, 0x00,
0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x20, 0x03, 0x80, 0x10, 0x00, 0x00, 0x40, 0x05, 0x40,
0x08, 0x00, 0x00, 0x80, 0x09, 0x20, 0x04, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00,
0x21, 0x08, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x03, 0x81, 0x03, 0x80, 0x00,
0x00, 0x01, 0x81, 0x03, 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x80, 0x00, 0x00, 0x04, 0x01, 0x00,
0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00,
0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'sunny', 48x32px
const unsigned char sunny [] PROGMEM = {
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x18,
0x20, 0x10, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00,
0x00, 0x02, 0x0f, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c,
0x00, 0x00, 0x00, 0x30, 0x80, 0x04, 0x30, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00,
0x03, 0xf2, 0x00, 0x01, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30,
0x80, 0x04, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00,
0x00, 0x02, 0x0f, 0xc1, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00,
0xc0, 0x00, 0x00, 0x18, 0x20, 0x10, 0x60, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00,
0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
// 'atmosphere', 48x32px
const unsigned char atmosphere[] PROGMEM = {
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00,
0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00,
0x00, 0x08, 0x04, 0x07, 0xff, 0xf8, 0xf0, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80,
0x00, 0x00, 0x00, 0x60, 0x00, 0x9f, 0x1f, 0xff, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'drizzle', 48x32px
const unsigned char drizzle[] PROGMEM = {
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00,
0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00,
0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80,
0x00, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x08, 0x00, 0x00
};
// 'thunderstorm', 48x32px
const unsigned char thunderstorm[] PROGMEM = {
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x0f, 0x80,
0x00, 0xc0, 0x03, 0x00, 0x0f, 0x80, 0x00, 0x20, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x10, 0x04, 0x00,
0x1e, 0x00, 0x00, 0x18, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3c, 0x00, 0x00, 0x08,
0x08, 0x00, 0x7c, 0x00, 0x00, 0x08, 0x04, 0x00, 0x78, 0x00, 0x00, 0x08, 0x04, 0x00, 0xf8, 0x00,
0x00, 0x08, 0x04, 0x00, 0xff, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x30, 0x01, 0x80,
0x1e, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01,
0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'steps', 19x23px
const unsigned char steps [] PROGMEM = {
0x00, 0x03, 0xc0, 0x00, 0x07, 0xe0, 0x00, 0x07, 0xe0, 0x00, 0x0f, 0xe0, 0x78, 0x0f, 0xe0, 0xfc,
0x0f, 0xe0, 0xfc, 0x0f, 0xe0, 0xfc, 0x0f, 0xe0, 0xfe, 0x0f, 0xe0, 0xfe, 0x07, 0xc0, 0xfe, 0x07,
0xc0, 0xfe, 0x07, 0x80, 0xfe, 0x00, 0x00, 0x7c, 0x0e, 0x00, 0x7c, 0x0f, 0x80, 0x7c, 0x1f, 0x80,
0x20, 0x1f, 0x00, 0x06, 0x0f, 0x00, 0x3e, 0x0e, 0x00, 0x3e, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x1e,
0x00, 0x00, 0x1e, 0x00, 0x00
};
// 'wifi', 26x18px
const unsigned char wifi [] PROGMEM = {
0x00, 0x7f, 0x80, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x1f, 0xc0, 0xfe, 0x00,
0x7e, 0x00, 0x1f, 0x80, 0xf8, 0x3f, 0x07, 0xc0, 0x71, 0xff, 0xe3, 0x80, 0x23, 0xff, 0xf1, 0x00,
0x07, 0xc0, 0xf8, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x06, 0x3f, 0x18, 0x00, 0x02, 0x7f, 0x90, 0x00,
0x00, 0xff, 0xc0, 0x00, 0x00, 0xe1, 0xc0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00
};
// 'wifioff', 26x18px
const unsigned char wifioff [] PROGMEM = {
0x00, 0x7f, 0x87, 0xc0, 0x03, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0x00, 0x1f, 0xc0, 0xfe, 0x00,
0x7e, 0x00, 0x7f, 0x80, 0xf8, 0x3f, 0xf7, 0xc0, 0x71, 0xff, 0xe3, 0x80, 0x23, 0xff, 0xf1, 0x00,
0x07, 0xcf, 0xf8, 0x00, 0x0f, 0x3e, 0x3c, 0x00, 0x06, 0x7f, 0x18, 0x00, 0x02, 0xff, 0x90, 0x00,
0x01, 0xff, 0xc0, 0x00, 0x07, 0xe1, 0xc0, 0x00, 0x0f, 0xc0, 0x80, 0x00, 0x1f, 0x0c, 0x00, 0x00,
0x3c, 0x1e, 0x00, 0x00, 0xf8, 0x0c, 0x00, 0x00
};

View File

@ -0,0 +1,198 @@
// 'vaultboy', 57x100px
const unsigned char vaultboy [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x87, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6b, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfb, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xe6, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xf7, 0xe7, 0x00, 0x00, 0x00,
0x00, 0x00, 0x27, 0xf3, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xef, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xf7, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe3, 0xe1, 0x00, 0x00, 0x00,
0x00, 0x00, 0x46, 0xe7, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xff, 0xd4, 0x00, 0x00, 0x00,
0x00, 0x00, 0x79, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xff, 0xec, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7d, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xf7, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x4f, 0xe3, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x7b, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x4f, 0xe3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x19, 0xf3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0xcf, 0xf8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0x07, 0xff, 0x00, 0x00, 0x00,
0x00, 0x03, 0xde, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0x9c, 0xff, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x0f, 0xbc, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x1d, 0xbc, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x19, 0xbd, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x39, 0x3d, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x3b, 0x7d, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7b, 0x7d, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x7b, 0x7d, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0xfb, 0x7d, 0xff, 0xff, 0xff, 0xc0, 0x00,
0x01, 0xfb, 0x7d, 0xff, 0xc7, 0xff, 0xc0, 0x00, 0x01, 0xfb, 0x7d, 0xff, 0xe1, 0xff, 0xe0, 0x00,
0x03, 0xfb, 0x7d, 0xff, 0xf8, 0xff, 0xf0, 0x00, 0x03, 0xfb, 0x7d, 0xff, 0xfc, 0x7f, 0xf8, 0x00,
0x07, 0xfb, 0x7d, 0xff, 0xfe, 0x3f, 0xf8, 0x00, 0x07, 0xf9, 0x7d, 0xff, 0xfe, 0x1f, 0xf8, 0x00,
0x07, 0xf9, 0x7d, 0xff, 0xfe, 0x1f, 0xfc, 0x00, 0x0f, 0xf9, 0x7d, 0xff, 0xf8, 0x0f, 0xfc, 0x00,
0x0f, 0xf8, 0x3c, 0xff, 0xc2, 0x0f, 0xfc, 0x00, 0x0f, 0xf8, 0xfc, 0xf8, 0x1e, 0x07, 0xfe, 0x00,
0x1f, 0xf0, 0xfe, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x1f, 0xe0, 0xff, 0xff, 0xfe, 0x03, 0xfe, 0x00,
0x3f, 0xc0, 0xff, 0xff, 0xfe, 0x03, 0xfe, 0x00, 0x20, 0x00, 0xff, 0xff, 0xf8, 0x01, 0xfe, 0x00,
0x0f, 0x00, 0x7f, 0xff, 0xc2, 0x01, 0xfc, 0x00, 0x1f, 0x80, 0x3f, 0xfe, 0x1e, 0x01, 0xf8, 0x00,
0x3f, 0x80, 0x07, 0xc0, 0xfe, 0x00, 0x03, 0x00, 0x3f, 0x80, 0x70, 0x1f, 0xfe, 0x02, 0x1f, 0x00,
0x7b, 0x80, 0x7f, 0xff, 0xfe, 0x07, 0xff, 0x00, 0x7b, 0x80, 0x27, 0xff, 0xfe, 0x07, 0xfe, 0x00,
0x7b, 0x80, 0x27, 0xff, 0xfc, 0x07, 0xfe, 0x00, 0x7b, 0x00, 0x07, 0xff, 0xfc, 0x03, 0xfc, 0x00,
0x3b, 0x00, 0x07, 0xff, 0xfc, 0x03, 0xd8, 0x00, 0x3c, 0x00, 0x0f, 0xff, 0xf8, 0x01, 0x90, 0x00,
0x14, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x17, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xce, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x1f, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x01, 0xff, 0xf8, 0xff, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf1, 0xff, 0x80, 0x00, 0x00,
0x00, 0x03, 0xff, 0xf1, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x07, 0xff, 0x80, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x7f, 0xc0, 0x00, 0x00,
0x0c, 0x0f, 0xfe, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x06, 0xc7, 0xfc, 0x00, 0x1f, 0xe0, 0x00, 0x00,
0x07, 0x43, 0xfc, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x07, 0xa9, 0xf0, 0x00, 0x0f, 0xc0, 0x00, 0x00,
0x03, 0x84, 0xe0, 0x00, 0x0e, 0x20, 0x00, 0x00, 0x03, 0xd6, 0x60, 0x00, 0x00, 0xe0, 0x00, 0x00,
0x01, 0xcf, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'vaultboypoint', 57x100px
const unsigned char vaultboypoint [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xe7, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x43, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xf1, 0xec, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xf1, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xef, 0xcc, 0x00, 0x00, 0x00,
0x00, 0x00, 0x2f, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf7, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1d, 0xf3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x13, 0x73, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x38, 0x1e, 0x77, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x1e, 0xff, 0xe8, 0x00, 0x00, 0x00,
0x00, 0xfe, 0x1e, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x1f, 0x71, 0xfc, 0x00, 0x00, 0x00,
0x00, 0x3f, 0x9f, 0xe5, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x93, 0x1b, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x07, 0xc3, 0xe7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xec, 0x0f, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x01, 0xe7, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x61, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x7f, 0x2f, 0x80, 0x00, 0x00,
0x00, 0x3c, 0xc1, 0x1e, 0x6f, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xc0, 0xef, 0xf8, 0x00, 0x00,
0x00, 0x1c, 0x24, 0x01, 0xdf, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0xe6, 0x00, 0x1f, 0xff, 0x00, 0x00,
0x00, 0x08, 0x30, 0x87, 0x8f, 0xff, 0xc0, 0x00, 0x00, 0x09, 0x8c, 0x8c, 0xc7, 0xbf, 0xe0, 0x00,
0x00, 0x02, 0x66, 0x8f, 0xa7, 0x07, 0x80, 0x00, 0x00, 0x1e, 0x76, 0x2f, 0xf2, 0x71, 0x00, 0x00,
0x00, 0x3e, 0xf4, 0x4f, 0x78, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xf4, 0x40, 0x79, 0xfc, 0x00, 0x00,
0x00, 0x3d, 0xe5, 0x19, 0xf8, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0x4d, 0xdf, 0xf8, 0x7c, 0x00, 0x00,
0x00, 0x3f, 0x05, 0xcf, 0xf8, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0xcd, 0xc7, 0xf9, 0x3c, 0x00, 0x00,
0x00, 0x7f, 0x8d, 0xdf, 0xf9, 0x3c, 0x00, 0x00, 0x00, 0x78, 0x1d, 0xce, 0xfb, 0x3c, 0x00, 0x00,
0x01, 0x7c, 0xdd, 0xe0, 0xf3, 0xbc, 0x00, 0x00, 0x01, 0x6f, 0x1d, 0xee, 0x07, 0xbc, 0x00, 0x00,
0x03, 0x30, 0x1d, 0xee, 0x0f, 0xb8, 0x00, 0x00, 0x03, 0x91, 0x1d, 0xde, 0xff, 0xf8, 0x00, 0x00,
0x03, 0xc0, 0x1d, 0x9c, 0xff, 0xf8, 0x00, 0x00, 0x03, 0xe3, 0x9d, 0xb8, 0xff, 0xf0, 0x00, 0x00,
0x03, 0xff, 0x9d, 0x72, 0x7f, 0xf0, 0x00, 0x00, 0x03, 0xff, 0x1c, 0xf6, 0x7f, 0xe0, 0x00, 0x00,
0x01, 0xff, 0x1d, 0xe6, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0xfe, 0x1b, 0xc7, 0x1f, 0x00, 0x00, 0x00,
0x00, 0x38, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x31, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0xe6, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7e, 0x20, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x0f, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xff, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0f, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xc0, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x07, 0x80, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x7f, 0xc0, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x01, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x40, 0x3f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xfb, 0xff, 0xf0, 0x40, 0x00,
0x00, 0x00, 0x5f, 0xfd, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xfd, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xf8, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xf8, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xf0, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x1f, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x1f, 0xe0, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x07, 0xff, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xe0, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x03, 0xff, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xe0, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x01, 0xff, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xc0, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0xff, 0x80, 0x00,
0x00, 0x00, 0x7f, 0xc0, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x7f, 0x80, 0x00,
0x00, 0x00, 0x1f, 0x80, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xff, 0x80, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x0f, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// 'vaultboysmile', 67x100px
const unsigned char vaultboysmile [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x7f, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x0f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xcc, 0x64, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9f, 0xf0, 0x18, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3f, 0x9f,
0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0xef, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xff, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x3f, 0x1f, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x37, 0x8f, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xcf, 0xff, 0x80,
0x00, 0x00, 0x03, 0x80, 0x00, 0x07, 0xcf, 0xff, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xcf,
0xff, 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x0f, 0x00, 0x00,
0x06, 0xfe, 0x1f, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x31, 0x9f, 0xe0, 0x00, 0x00, 0x07,
0x00, 0x00, 0x02, 0x7e, 0x1f, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0x80, 0xff, 0x00, 0x00,
0x00, 0x03, 0x80, 0x00, 0x01, 0xe7, 0xfe, 0x00, 0x00, 0x00, 0x38, 0x60, 0x00, 0x01, 0xe7, 0xfc,
0x00, 0x00, 0x00, 0x7f, 0x30, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0xff, 0xb0, 0x00, 0x00,
0x7f, 0xf3, 0x00, 0x00, 0x00, 0x6f, 0xb8, 0x00, 0x00, 0x3f, 0xeb, 0x80, 0x00, 0x00, 0x00, 0xb9,
0x80, 0x01, 0x0f, 0xf3, 0xb0, 0x00, 0x00, 0x7e, 0x39, 0xff, 0xff, 0x60, 0x67, 0x3c, 0x00, 0x00,
0x7f, 0xb0, 0xff, 0xff, 0x70, 0x0f, 0x3e, 0x00, 0x00, 0x7f, 0x84, 0xff, 0xff, 0x3e, 0x3e, 0x7f,
0x80, 0x00, 0x00, 0x15, 0xff, 0xff, 0x9f, 0xf8, 0xff, 0xc0, 0x00, 0x3f, 0x25, 0xff, 0xff, 0xdf,
0xf3, 0xff, 0xe0, 0x00, 0x3f, 0xa9, 0xff, 0xef, 0xdf, 0x87, 0xff, 0xf0, 0x00, 0x1f, 0xab, 0xff,
0xcf, 0xdf, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x03, 0xfe, 0x0f, 0xdf, 0x7f, 0xff, 0xfc, 0x00, 0x00,
0x27, 0xf0, 0x0f, 0x9f, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9e, 0x7f, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x1f, 0x9e, 0x7f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xbe, 0x7f,
0x9f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xbe, 0x7f, 0xcf, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x0f,
0xbe, 0x7f, 0xe0, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xbe, 0x7f, 0xf2, 0x1f, 0xc0, 0x00, 0x00,
0x00, 0x0f, 0x3e, 0x7f, 0xf3, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x3e, 0xff, 0xf6, 0xff, 0x80,
0x00, 0x00, 0x00, 0x0f, 0x3e, 0xff, 0xe4, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3e, 0xff, 0xe5,
0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3e, 0xff, 0xe1, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x3e,
0xff, 0xeb, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3e, 0xff, 0xeb, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3e, 0xff, 0x0b, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x70, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0x00, 0xe1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xe4, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff,
0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07,
0xff, 0xff, 0xef, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x90, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0xff, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xfc, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff,
0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x3f, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x1f,
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07,
0xfe, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x00,
0x00, 0x07, 0xfe, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x03, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xfe, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x01, 0xff,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc,
0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xfc, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x7f, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xf8, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x3f, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00,
0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f,
0xf8, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
0x00, 0x30, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x18, 0x00,
0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
// 'menu bar', 200x9px
const unsigned char menubar [] PROGMEM = {
0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff
};
// 'gauge', 73x10px
const unsigned char gauge [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x80, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x1f, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x0f, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf9, 0x80, 0x07, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80, 0x03, 0xc8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x09, 0x80, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80,
0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x80, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf9, 0x80
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,201 @@
const uint8_t monofonto10pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFF, 0xC3, 0xF0, 0x99, 0x99, 0x90, 0x0D, 0x82, 0x60, 0x98,
0x64, 0x3F, 0xDF, 0xE1, 0x30, 0xC8, 0x7F, 0xBF, 0xC2, 0x60, 0x98, 0x64,
0x1B, 0x00, 0x18, 0x18, 0x3E, 0x7F, 0xE7, 0xC3, 0xE0, 0xF0, 0x7C, 0x3F,
0x0F, 0x03, 0x03, 0xE3, 0xFF, 0x7E, 0x18, 0x18, 0xF0, 0xE4, 0x29, 0x12,
0x4C, 0x92, 0x25, 0x8F, 0x7C, 0x29, 0x1A, 0x44, 0x93, 0x24, 0x89, 0x42,
0x70, 0xF0, 0x1C, 0x0F, 0x83, 0x60, 0xD8, 0x36, 0x0F, 0x03, 0x81, 0xF2,
0x6F, 0xF1, 0xEC, 0x73, 0x9C, 0x7F, 0x8F, 0x70, 0xFF, 0xC0, 0x19, 0x8C,
0xC6, 0x31, 0x98, 0xC6, 0x31, 0x84, 0x31, 0x8C, 0x61, 0x8E, 0x20, 0x8C,
0xC6, 0x66, 0x63, 0x33, 0x33, 0x26, 0x66, 0x6C, 0xC8, 0x0C, 0x03, 0x08,
0xC7, 0xB7, 0x7F, 0x83, 0x01, 0xA0, 0xCE, 0x71, 0x00, 0x18, 0x18, 0x18,
0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x6D, 0xB5, 0x80, 0xFF, 0xF0, 0xFC,
0x00, 0xC0, 0x60, 0x18, 0x04, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x04, 0x03,
0x00, 0x80, 0x60, 0x18, 0x0C, 0x03, 0x00, 0x80, 0x60, 0x18, 0x0C, 0x00,
0x3C, 0x7E, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
0x7E, 0x3C, 0x1B, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0x3C,
0x7E, 0xE7, 0xE3, 0x07, 0x07, 0x0E, 0x0E, 0x1C, 0x1C, 0x38, 0x30, 0x7F,
0xFF, 0x3C, 0x7E, 0xE7, 0xC3, 0x03, 0x07, 0x0E, 0x0E, 0x03, 0x03, 0xC3,
0xE7, 0x7E, 0x3C, 0x1E, 0x1E, 0x16, 0x36, 0x26, 0x66, 0x46, 0xC6, 0x86,
0xFF, 0xFF, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFE, 0xFF,
0xE7, 0x03, 0x03, 0x43, 0xE7, 0xFE, 0x3C, 0x0E, 0x1C, 0x18, 0x38, 0x30,
0x7C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0xFF, 0xFF, 0x07,
0x06, 0x0E, 0x0E, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x70, 0x70, 0xF0, 0x3C,
0x7E, 0xE7, 0xC3, 0xE7, 0x7E, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE7, 0x7E,
0x3C, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0x7E, 0x0E, 0x0C, 0x1C,
0x38, 0x38, 0x70, 0xFC, 0x03, 0xF0, 0x6D, 0x80, 0x03, 0x6F, 0x64, 0x01,
0x07, 0x1C, 0x70, 0xC0, 0xC0, 0x70, 0x1E, 0x07, 0x01, 0xFF, 0xFF, 0x00,
0x00, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x03, 0x0E, 0x78, 0xE0,
0x80, 0x3C, 0x7E, 0x66, 0xE7, 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x00, 0x00,
0x18, 0x38, 0x18, 0x1F, 0x0C, 0x66, 0x09, 0x01, 0x40, 0x73, 0x9D, 0x27,
0x49, 0xDA, 0xF3, 0x64, 0x01, 0x80, 0x30, 0x06, 0x01, 0x00, 0x18, 0x3C,
0x3C, 0x3C, 0x3C, 0x7C, 0x7E, 0x7E, 0x6E, 0x66, 0xFF, 0xFF, 0xE7, 0xC7,
0xFC, 0xFE, 0xC7, 0xC7, 0xC7, 0xC6, 0xFC, 0xFE, 0xC7, 0xC7, 0xC7, 0xC7,
0xFE, 0xFC, 0x3C, 0x7E, 0xE7, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
0xE7, 0xE7, 0x7E, 0x3C, 0xFC, 0xFE, 0xC7, 0xC7, 0xC3, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0xFC, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0,
0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0,
0xE0, 0xE0, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x3C, 0x7E,
0xE7, 0xE7, 0xC0, 0xC0, 0xCF, 0xCF, 0xC3, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B,
0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7,
0xE7, 0xE7, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0xFF,
0xF0, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0x0E, 0xFE, 0xFC, 0xE7, 0xE6, 0xE6, 0xEC, 0xEC, 0xF8, 0xF8, 0xF8, 0xFC,
0xEC, 0xEE, 0xE6, 0xE7, 0xE7, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xE3, 0xE7, 0xE7, 0xE7, 0xFF,
0xFF, 0xFF, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC3, 0xC3, 0xE3, 0xE3, 0xF3,
0xF3, 0xF3, 0xFB, 0xDB, 0xDF, 0xDF, 0xCF, 0xCF, 0xC7, 0xC7, 0xC7, 0x3C,
0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xE7, 0x7E,
0x3C, 0xFC, 0xFF, 0xE7, 0xE3, 0xE3, 0xE3, 0xE7, 0xFF, 0xFC, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0x0E, 0x06, 0x06, 0xFC, 0x7F, 0x39, 0xDC,
0xEE, 0x37, 0x3B, 0x9D, 0xFC, 0xFC, 0x7E, 0x3B, 0x9D, 0xCE, 0x77, 0x3C,
0x3C, 0x7E, 0xE7, 0xC3, 0xE0, 0xF0, 0x7C, 0x1F, 0x07, 0x03, 0xC3, 0xF7,
0x7F, 0x3C, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0xC3, 0xE7, 0xFF, 0x3C, 0xE1, 0xD8, 0x67, 0x19, 0xCE, 0x73,
0x8C, 0xC3, 0x30, 0xFC, 0x3F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x03, 0x00,
0xE1, 0xF8, 0x76, 0x19, 0x96, 0x6D, 0x9B, 0x66, 0xD9, 0xB6, 0x7F, 0x9F,
0xE3, 0xF0, 0xCC, 0x33, 0x0C, 0xC0, 0xE7, 0xE7, 0x66, 0x7E, 0x7E, 0x3C,
0x3C, 0x3C, 0x3C, 0x7E, 0x7E, 0x66, 0xE7, 0xE7, 0xE1, 0xDC, 0xE7, 0x38,
0xCC, 0x3F, 0x0F, 0xC1, 0xE0, 0x78, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C,
0x03, 0x00, 0x7F, 0xBF, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x38, 0x1C,
0x1C, 0x0E, 0x06, 0x07, 0xFF, 0xFC, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xCC, 0xCC, 0xCC, 0xFF, 0xC0, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01,
0x80, 0x60, 0x08, 0x03, 0x00, 0x40, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x04,
0x01, 0x80, 0x60, 0x0C, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
0x33, 0xFF, 0x18, 0x3C, 0x3C, 0x66, 0x66, 0xC3, 0xC3, 0xFF, 0xFF, 0xF0,
0xE6, 0x33, 0x3E, 0x7F, 0xE7, 0x03, 0x7F, 0xFF, 0xE3, 0xE7, 0xFF, 0x7B,
0xC0, 0xC0, 0xC0, 0xC0, 0xCE, 0xDF, 0xE7, 0xE3, 0xC3, 0xC3, 0xE3, 0xE7,
0xDF, 0xCE, 0x1E, 0x7F, 0xF2, 0xC0, 0xC0, 0xC0, 0xC0, 0xF2, 0x7F, 0x3E,
0x03, 0x03, 0x03, 0x03, 0x73, 0xFB, 0xE7, 0xC7, 0xC3, 0xC3, 0xC7, 0xE7,
0xFB, 0x73, 0x3C, 0x7E, 0xE7, 0xC3, 0xFF, 0xC0, 0xC0, 0xE7, 0x7E, 0x3C,
0x1F, 0x3F, 0x38, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x3B, 0x7B, 0xE7, 0xC7, 0xC3, 0xC3, 0xC7, 0xE7, 0x7B, 0x3B,
0x03, 0xC7, 0xFE, 0x7C, 0xC0, 0xC0, 0xC0, 0xC0, 0xCE, 0xDF, 0xE7, 0xE3,
0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x30, 0xC3, 0x00, 0xF3, 0xC3, 0x0C,
0x30, 0xC3, 0x0C, 0xFF, 0xF0, 0x18, 0x71, 0x80, 0xFF, 0xF1, 0xC7, 0x1C,
0x71, 0xC7, 0x1C, 0x71, 0xC6, 0xFB, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7,
0xCE, 0xCC, 0xD8, 0xF8, 0xD8, 0xDC, 0xCE, 0xCE, 0xC7, 0xFF, 0xCE, 0x73,
0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xF7, 0xFF, 0xDB, 0xDB, 0xDB, 0xDB,
0xDB, 0xDB, 0xDB, 0xDB, 0xCE, 0xDF, 0xE7, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3,
0xC3, 0xC3, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xC3, 0xE7, 0x7E, 0x3C,
0xDE, 0xFE, 0xE7, 0xC7, 0xC3, 0xC3, 0xC7, 0xE7, 0xFE, 0xDE, 0xC0, 0xC0,
0xC0, 0xC0, 0x73, 0xFB, 0xE7, 0xC7, 0xC3, 0xC3, 0xC7, 0xE7, 0xFB, 0x73,
0x03, 0x03, 0x03, 0x03, 0xCE, 0xDF, 0xE6, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0x3C, 0x7E, 0xE6, 0xE0, 0x78, 0x1E, 0x07, 0xE7, 0x7E, 0x3C,
0x30, 0x30, 0x30, 0xFE, 0xFE, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3F,
0x1F, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0xE1,
0xDC, 0x67, 0x38, 0xCC, 0x33, 0x0F, 0xC1, 0xE0, 0x78, 0x1E, 0x07, 0x80,
0xE5, 0xD9, 0x66, 0x59, 0xB6, 0x7F, 0x9F, 0xE3, 0xF0, 0xFC, 0x33, 0x0C,
0xC0, 0xE7, 0x66, 0x7E, 0x3C, 0x3C, 0x3C, 0x3C, 0x7E, 0x66, 0xE7, 0xE1,
0xDC, 0x67, 0x38, 0xCC, 0x33, 0x0E, 0xC1, 0xF0, 0x78, 0x1E, 0x07, 0x80,
0xC0, 0x30, 0x1C, 0x06, 0x00, 0xFF, 0xFE, 0x0E, 0x0C, 0x1C, 0x38, 0x30,
0x70, 0x7F, 0xFF, 0x3B, 0xDC, 0xC2, 0x10, 0x8C, 0x66, 0x38, 0xC2, 0x10,
0x8C, 0x63, 0x8E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE7, 0x9C, 0x62,
0x10, 0x86, 0x30, 0xCE, 0x62, 0x10, 0x86, 0x33, 0xB9, 0xC0, 0x78, 0x7F,
0xF8, 0x78 };
const GFXglyph monofonto10pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 10, 0, 0 }, // 0x20 ' '
{ 1, 2, 14, 10, 4, -13 }, // 0x21 '!'
{ 5, 4, 5, 10, 3, -13 }, // 0x22 '"'
{ 8, 10, 14, 10, 0, -13 }, // 0x23 '#'
{ 26, 8, 18, 10, 1, -15 }, // 0x24 '$'
{ 44, 10, 14, 10, 0, -13 }, // 0x25 '%'
{ 62, 10, 14, 10, 0, -13 }, // 0x26 '&'
{ 80, 2, 5, 10, 4, -13 }, // 0x27 '''
{ 82, 5, 20, 10, 4, -15 }, // 0x28 '('
{ 95, 4, 20, 10, 2, -15 }, // 0x29 ')'
{ 105, 10, 9, 10, 0, -13 }, // 0x2A '*'
{ 117, 8, 9, 10, 1, -11 }, // 0x2B '+'
{ 126, 3, 6, 10, 3, -2 }, // 0x2C ','
{ 129, 6, 2, 10, 2, -7 }, // 0x2D '-'
{ 131, 2, 3, 10, 4, -2 }, // 0x2E '.'
{ 132, 10, 19, 10, 0, -15 }, // 0x2F '/'
{ 156, 8, 14, 10, 1, -13 }, // 0x30 '0'
{ 170, 5, 14, 10, 2, -13 }, // 0x31 '1'
{ 179, 8, 14, 10, 1, -13 }, // 0x32 '2'
{ 193, 8, 14, 10, 1, -13 }, // 0x33 '3'
{ 207, 8, 14, 10, 1, -13 }, // 0x34 '4'
{ 221, 8, 14, 10, 1, -13 }, // 0x35 '5'
{ 235, 8, 14, 10, 1, -13 }, // 0x36 '6'
{ 249, 8, 14, 10, 1, -13 }, // 0x37 '7'
{ 263, 8, 14, 10, 1, -13 }, // 0x38 '8'
{ 277, 8, 14, 10, 1, -13 }, // 0x39 '9'
{ 291, 2, 10, 10, 4, -9 }, // 0x3A ':'
{ 294, 3, 13, 10, 3, -9 }, // 0x3B ';'
{ 299, 8, 10, 10, 1, -11 }, // 0x3C '<'
{ 309, 8, 6, 10, 1, -9 }, // 0x3D '='
{ 315, 8, 10, 10, 1, -11 }, // 0x3E '>'
{ 325, 8, 14, 10, 1, -13 }, // 0x3F '?'
{ 339, 10, 15, 10, 0, -11 }, // 0x40 '@'
{ 358, 8, 14, 10, 1, -13 }, // 0x41 'A'
{ 372, 8, 14, 10, 1, -13 }, // 0x42 'B'
{ 386, 8, 14, 10, 1, -13 }, // 0x43 'C'
{ 400, 8, 14, 10, 1, -13 }, // 0x44 'D'
{ 414, 8, 14, 10, 1, -13 }, // 0x45 'E'
{ 428, 8, 14, 10, 1, -13 }, // 0x46 'F'
{ 442, 8, 14, 10, 1, -13 }, // 0x47 'G'
{ 456, 8, 14, 10, 1, -13 }, // 0x48 'H'
{ 470, 6, 14, 10, 2, -13 }, // 0x49 'I'
{ 481, 8, 14, 10, 1, -13 }, // 0x4A 'J'
{ 495, 8, 14, 10, 1, -13 }, // 0x4B 'K'
{ 509, 8, 14, 10, 1, -13 }, // 0x4C 'L'
{ 523, 8, 14, 10, 1, -13 }, // 0x4D 'M'
{ 537, 8, 14, 10, 1, -13 }, // 0x4E 'N'
{ 551, 8, 14, 10, 1, -13 }, // 0x4F 'O'
{ 565, 8, 14, 10, 1, -13 }, // 0x50 'P'
{ 579, 8, 17, 10, 1, -13 }, // 0x51 'Q'
{ 596, 9, 14, 10, 1, -13 }, // 0x52 'R'
{ 612, 8, 14, 10, 1, -13 }, // 0x53 'S'
{ 626, 8, 14, 10, 1, -13 }, // 0x54 'T'
{ 640, 8, 14, 10, 1, -13 }, // 0x55 'U'
{ 654, 10, 14, 10, 0, -13 }, // 0x56 'V'
{ 672, 10, 14, 10, 0, -13 }, // 0x57 'W'
{ 690, 8, 14, 10, 1, -13 }, // 0x58 'X'
{ 704, 10, 14, 10, 0, -13 }, // 0x59 'Y'
{ 722, 9, 14, 10, 0, -13 }, // 0x5A 'Z'
{ 738, 4, 20, 10, 5, -15 }, // 0x5B '['
{ 748, 10, 19, 10, 0, -15 }, // 0x5C '\'
{ 772, 4, 20, 10, 1, -15 }, // 0x5D ']'
{ 782, 8, 7, 10, 1, -13 }, // 0x5E '^'
{ 789, 10, 2, 10, 0, 3 }, // 0x5F '_'
{ 792, 4, 4, 10, 3, -13 }, // 0x60 '`'
{ 794, 8, 10, 10, 1, -9 }, // 0x61 'a'
{ 804, 8, 14, 10, 1, -13 }, // 0x62 'b'
{ 818, 8, 10, 10, 1, -9 }, // 0x63 'c'
{ 828, 8, 14, 10, 1, -13 }, // 0x64 'd'
{ 842, 8, 10, 10, 1, -9 }, // 0x65 'e'
{ 852, 8, 14, 10, 1, -13 }, // 0x66 'f'
{ 866, 8, 14, 10, 1, -9 }, // 0x67 'g'
{ 880, 8, 14, 10, 1, -13 }, // 0x68 'h'
{ 894, 6, 14, 10, 2, -13 }, // 0x69 'i'
{ 905, 6, 18, 10, 2, -13 }, // 0x6A 'j'
{ 919, 8, 14, 10, 1, -13 }, // 0x6B 'k'
{ 933, 5, 14, 10, 2, -13 }, // 0x6C 'l'
{ 942, 8, 10, 10, 1, -9 }, // 0x6D 'm'
{ 952, 8, 10, 10, 1, -9 }, // 0x6E 'n'
{ 962, 8, 10, 10, 1, -9 }, // 0x6F 'o'
{ 972, 8, 14, 10, 1, -9 }, // 0x70 'p'
{ 986, 8, 14, 10, 1, -9 }, // 0x71 'q'
{ 1000, 8, 10, 10, 1, -9 }, // 0x72 'r'
{ 1010, 8, 10, 10, 1, -9 }, // 0x73 's'
{ 1020, 8, 13, 10, 1, -12 }, // 0x74 't'
{ 1033, 8, 10, 10, 1, -9 }, // 0x75 'u'
{ 1043, 10, 10, 10, 0, -9 }, // 0x76 'v'
{ 1056, 10, 10, 10, 0, -9 }, // 0x77 'w'
{ 1069, 8, 10, 10, 1, -9 }, // 0x78 'x'
{ 1079, 10, 14, 10, 0, -9 }, // 0x79 'y'
{ 1097, 8, 10, 10, 1, -9 }, // 0x7A 'z'
{ 1107, 5, 20, 10, 4, -15 }, // 0x7B '{'
{ 1120, 2, 19, 10, 4, -15 }, // 0x7C '|'
{ 1125, 5, 20, 10, 1, -15 }, // 0x7D '}'
{ 1138, 10, 3, 10, 0, -8 } }; // 0x7E '~'
const GFXfont monofonto10pt7b PROGMEM = {
(uint8_t *)monofonto10pt7bBitmaps,
(GFXglyph *)monofonto10pt7bGlyphs,
0x20, 0x7E, 24 };
// Approx. 1814 bytes

View File

@ -0,0 +1,853 @@
const uint8_t monofonto28pt7bBitmaps[] PROGMEM = {
0x00, 0x7E, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7E, 0xFD, 0xFB, 0xF7,
0xEF, 0xDF, 0xBF, 0x7E, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7E, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x08, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xBE,
0x10, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87,
0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0E, 0x00, 0x3C, 0x0F, 0x00, 0x0F,
0x07, 0xC0, 0x03, 0xC1, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x7C, 0x1E, 0x00,
0x1E, 0x0F, 0x80, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0xF0, 0x00, 0xF8, 0x3C,
0x00, 0x3E, 0x0F, 0x00, 0x0F, 0x07, 0xC0, 0x3F, 0xFF, 0xFF, 0x1F, 0xFF,
0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFE, 0x01,
0xE0, 0xF0, 0x00, 0x78, 0x3C, 0x00, 0x3E, 0x0F, 0x00, 0x0F, 0x03, 0xC0,
0x03, 0xC1, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x1E, 0x00, 0x1E, 0x07,
0x80, 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xC3, 0xFF,
0xFF, 0xF0, 0xFF, 0xFF, 0xFC, 0x03, 0xC1, 0xF0, 0x00, 0xF0, 0x78, 0x00,
0x3C, 0x1E, 0x00, 0x1F, 0x07, 0x80, 0x07, 0x81, 0xE0, 0x01, 0xE0, 0xF8,
0x00, 0x78, 0x3C, 0x00, 0x3E, 0x0F, 0x00, 0x0F, 0x83, 0xC0, 0x03, 0xC1,
0xF0, 0x00, 0xF0, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01,
0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x3F, 0xC0, 0x01, 0xFF,
0xF0, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF,
0xE3, 0xF8, 0x3F, 0xCF, 0xE0, 0x1F, 0xDF, 0xC0, 0x3F, 0xBF, 0x00, 0x7F,
0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07,
0xFC, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x1F,
0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0xC0, 0x0F, 0xFF, 0xC0, 0x07,
0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00,
0xFE, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x07,
0xFF, 0xE0, 0x0F, 0xDF, 0xC0, 0x3F, 0xBF, 0xE0, 0xFF, 0x3F, 0xFF, 0xFE,
0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0x00,
0x7F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00,
0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x03,
0xFC, 0x00, 0x1F, 0x7F, 0xE0, 0x03, 0xEF, 0xFE, 0x00, 0x3C, 0xFF, 0xE0,
0x07, 0x8F, 0x1F, 0x00, 0x78, 0xF1, 0xF0, 0x0F, 0x0F, 0x1F, 0x01, 0xF0,
0xF1, 0xF0, 0x1E, 0x0F, 0x1F, 0x03, 0xE0, 0xF1, 0xF0, 0x3C, 0x0F, 0x1F,
0x07, 0x80, 0xF1, 0xF0, 0x78, 0x0F, 0x1F, 0x0F, 0x00, 0xF1, 0xF1, 0xF0,
0x0F, 0x1F, 0x1E, 0x00, 0xF1, 0xF3, 0xE0, 0x0F, 0x1F, 0x3C, 0x00, 0xF1,
0xF7, 0x80, 0x0F, 0xFE, 0xF9, 0xF8, 0xFF, 0xEF, 0x7F, 0xE7, 0xFD, 0xF7,
0xFE, 0x3F, 0x9E, 0xFF, 0xF0, 0x03, 0xCF, 0x9F, 0x00, 0x3C, 0xF0, 0xF0,
0x07, 0x8F, 0x0F, 0x00, 0xF8, 0xF0, 0xF0, 0x0F, 0x0F, 0x0F, 0x01, 0xF0,
0xF0, 0xF0, 0x1E, 0x0F, 0x0F, 0x03, 0xC0, 0xF0, 0xF0, 0x3C, 0x0F, 0x0F,
0x07, 0x80, 0xF0, 0xF0, 0xF8, 0x0F, 0x0F, 0x0F, 0x00, 0xF0, 0xF1, 0xF0,
0x0F, 0x0F, 0x1E, 0x00, 0xF0, 0xF3, 0xC0, 0x0F, 0xFF, 0x7C, 0x00, 0xFF,
0xF7, 0x80, 0x07, 0xFE, 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x40, 0x00,
0x10, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xF8, 0x00, 0x1F, 0xFF, 0x00,
0x0F, 0xFF, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F,
0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E,
0x1F, 0x00, 0x0F, 0xCF, 0xC0, 0x03, 0xF3, 0xF0, 0x00, 0x7F, 0xF8, 0x00,
0x1F, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0,
0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x83, 0xFF,
0xF0, 0x30, 0xFE, 0xFC, 0x1C, 0x7F, 0x3F, 0x8F, 0x9F, 0x87, 0xE7, 0xFF,
0xC1, 0xFD, 0xFF, 0xF0, 0x3F, 0xFE, 0xFC, 0x0F, 0xFF, 0x3F, 0x01, 0xFF,
0x8F, 0xC0, 0x7F, 0xE3, 0xF0, 0x0F, 0xF0, 0xFC, 0x03, 0xF8, 0x3F, 0x01,
0xFF, 0x0F, 0xE0, 0xFF, 0xC1, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x0F,
0xFF, 0xEF, 0xC3, 0xFF, 0xF3, 0xF8, 0x7F, 0xF8, 0x7E, 0x07, 0xF8, 0x1F,
0xC0, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01,
0x00, 0x70, 0x0F, 0x83, 0xF0, 0x7E, 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x83,
0xF0, 0x7C, 0x1F, 0x83, 0xF0, 0x7C, 0x0F, 0x83, 0xF0, 0x7E, 0x0F, 0x81,
0xF0, 0x3E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x03, 0xE0,
0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E,
0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x1F, 0x83,
0xF0, 0x3E, 0x07, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0x7E,
0x07, 0xC0, 0xE0, 0x08, 0x08, 0x03, 0x80, 0xFC, 0x07, 0xC0, 0x7E, 0x07,
0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, 0x80,
0xFC, 0x0F, 0xC0, 0x7C, 0x07, 0xC0, 0x7E, 0x07, 0xE0, 0x7E, 0x03, 0xE0,
0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
0x3F, 0x03, 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x0F, 0xC0, 0xF8, 0x0F, 0x81,
0xF8, 0x1F, 0x01, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x07, 0xE0, 0x7C, 0x0F,
0xC0, 0x38, 0x00, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00,
0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0,
0x00, 0x00, 0x0F, 0x00, 0x43, 0x00, 0xF0, 0x1C, 0x7C, 0x0F, 0x07, 0xC7,
0xF0, 0xF1, 0xFE, 0x7F, 0xCE, 0x7F, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF,
0xFF, 0x90, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00,
0x00, 0x7F, 0xE0, 0x00, 0x0F, 0x9F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x1F,
0x0F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x07, 0xF0, 0x0F, 0xE0, 0x3F,
0x00, 0x7C, 0x03, 0xE0, 0x03, 0xC0, 0x18, 0x00, 0x08, 0x01, 0x00, 0x00,
0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00,
0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00,
0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x1F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x3C,
0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03,
0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00,
0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x3F, 0x3F, 0x3F, 0x3E, 0x3E,
0x3E, 0x7E, 0x7E, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x10, 0xF9,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7C, 0x20, 0x00, 0x00, 0x03, 0xE0, 0x00,
0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8,
0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00,
0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00,
0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07,
0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00,
0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0,
0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00,
0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00,
0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F,
0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00,
0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0,
0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00,
0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E,
0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xF8, 0x03,
0xFF, 0xF0, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF,
0xFF, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x7F, 0xFC,
0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F,
0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0,
0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF,
0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00,
0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF,
0xC1, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF,
0x83, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x01, 0x80, 0x00, 0x00, 0x08, 0x01,
0xC0, 0x3E, 0x07, 0xF0, 0xFF, 0x8F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0xF3, 0xFE, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01,
0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F,
0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0,
0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07,
0xE0, 0x3F, 0x00, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xF8, 0x07, 0xFF,
0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xC1, 0xFE,
0x7F, 0x03, 0xFB, 0xF8, 0x07, 0xEF, 0xE0, 0x1F, 0xBF, 0x80, 0x7F, 0xFC,
0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x07,
0xF8, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x1F, 0xE0,
0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x80, 0x01,
0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xF0,
0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x00,
0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE3, 0xFF,
0xFF, 0x9F, 0xFF, 0xFE, 0xFF, 0xFF, 0xF8, 0x00, 0x08, 0x00, 0x03, 0xFF,
0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x01, 0xFF, 0xFF, 0x03, 0xFF, 0xFF,
0x0F, 0xFF, 0xFE, 0x1F, 0xC1, 0xFE, 0x3F, 0x01, 0xFC, 0xFC, 0x01, 0xF9,
0xF8, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80,
0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00,
0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x03,
0xFE, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x03,
0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x1F,
0xFF, 0x00, 0x3F, 0xFE, 0x00, 0xFE, 0xFE, 0x03, 0xFD, 0xFE, 0x0F, 0xF3,
0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x03,
0xFF, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x30, 0x00, 0x00, 0x1F, 0xF0, 0x00,
0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x7F, 0xF0, 0x00,
0xFF, 0xF0, 0x00, 0xFB, 0xF0, 0x00, 0xFB, 0xF0, 0x01, 0xF3, 0xF0, 0x01,
0xF3, 0xF0, 0x03, 0xE3, 0xF0, 0x03, 0xE3, 0xF0, 0x07, 0xC3, 0xF0, 0x07,
0xC3, 0xF0, 0x0F, 0x83, 0xF0, 0x0F, 0x83, 0xF0, 0x1F, 0x03, 0xF0, 0x1F,
0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3E, 0x03, 0xF0, 0x3E, 0x03, 0xF0, 0x7C,
0x03, 0xF0, 0x7C, 0x03, 0xF0, 0xF8, 0x03, 0xF0, 0xF8, 0x03, 0xF0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00,
0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00,
0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F,
0xFF, 0xF0, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x87, 0xFF,
0xFF, 0x0F, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00,
0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00,
0x0F, 0x80, 0x00, 0x1F, 0x3F, 0xC0, 0x3F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0,
0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xF0, 0x7F, 0x8F,
0xC0, 0x7F, 0x9F, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00,
0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x40, 0x1F, 0xC3, 0x80,
0x3F, 0x9F, 0x00, 0xFF, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF,
0xE1, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x03, 0xFF, 0xF0,
0x01, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xC0,
0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00,
0x1F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07,
0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC,
0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF,
0xC1, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF,
0x3F, 0x80, 0xFF, 0x7F, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x01, 0xFF,
0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x1F, 0xDF, 0x80, 0x3F, 0xBF,
0x80, 0x7F, 0x7F, 0x01, 0xFE, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF,
0xFF, 0xC1, 0xFF, 0xFF, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF0, 0x00, 0xFF,
0xC0, 0x00, 0x10, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF,
0xFC, 0x00, 0x03, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x07,
0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F,
0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F,
0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x7F,
0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFE,
0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x03, 0xFC,
0x00, 0x07, 0xF8, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0,
0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xE0,
0x00, 0x3F, 0xE0, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFE, 0x00, 0x1F, 0xFF,
0x00, 0x7F, 0xFF, 0x01, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE,
0x1F, 0xC1, 0xFC, 0x3F, 0x01, 0xFC, 0x7E, 0x01, 0xF8, 0xF8, 0x03, 0xF1,
0xF0, 0x07, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x8F, 0x80, 0x3F, 0x1F,
0x80, 0x7E, 0x3F, 0x81, 0xF8, 0x3F, 0x87, 0xF0, 0x3F, 0xFF, 0xC0, 0x3F,
0xFF, 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x1F, 0xC1,
0xFE, 0x7F, 0x00, 0xFC, 0xFC, 0x01, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03,
0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F,
0xFE, 0x00, 0xFF, 0xFE, 0x01, 0xFD, 0xFE, 0x0F, 0xFB, 0xFF, 0xFF, 0xE3,
0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x03,
0xFF, 0x80, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFE, 0x00, 0x1F,
0xFF, 0x00, 0x7F, 0xFF, 0x01, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x0F, 0xFF,
0xFF, 0x3F, 0xE1, 0xFE, 0x7F, 0x01, 0xFC, 0xFE, 0x01, 0xFD, 0xF8, 0x03,
0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3F,
0xFF, 0x00, 0x7F, 0x7F, 0x00, 0xFE, 0xFE, 0x03, 0xFD, 0xFF, 0x0F, 0xFB,
0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07,
0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00,
0xFF, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F,
0x80, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xE0,
0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00,
0x0F, 0xE0, 0x00, 0x10, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x7C, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xCF, 0xFF, 0xFF,
0xFF, 0xFD, 0xFB, 0xE1, 0x00, 0x04, 0x0F, 0x0F, 0xC7, 0xF7, 0xF9, 0xFC,
0xFE, 0x7E, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x03, 0xF9, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x0F,
0x87, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0x7C, 0x3E, 0x06, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00,
0x07, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00,
0x7F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07,
0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x80,
0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F,
0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0xE0, 0x00,
0x01, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00,
0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xF8,
0x00, 0x03, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01,
0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0,
0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F,
0x00, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x01, 0xFF,
0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xF0,
0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x00,
0x00, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7F,
0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0xC7, 0xFF, 0xFE, 0x7F,
0xFF, 0xEF, 0xF0, 0xFE, 0xFE, 0x0F, 0xEF, 0xC0, 0x7F, 0xFC, 0x07, 0xF0,
0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFE,
0x00, 0x3F, 0xC0, 0x07, 0xFC, 0x00, 0xFF, 0x80, 0x1F, 0xF0, 0x01, 0xFE,
0x00, 0x3F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F,
0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00,
0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00,
0x03, 0xE0, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xFC, 0x00,
0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x0F, 0xE0, 0x7F, 0x07, 0xE0, 0x07,
0xC3, 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x1E, 0x3C, 0x00, 0x03, 0x9F, 0x00,
0x00, 0xF7, 0x80, 0x00, 0x3D, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFC,
0x00, 0x00, 0x7F, 0x01, 0xEC, 0x1F, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0xC1,
0xFC, 0x3C, 0x70, 0x7F, 0x0E, 0x0C, 0x1F, 0xC3, 0x83, 0x07, 0xF0, 0xE0,
0xC1, 0xFC, 0x38, 0x30, 0x7F, 0x0E, 0x0C, 0x1B, 0xC3, 0xC7, 0x0E, 0xF0,
0x7F, 0xC3, 0xBC, 0x0F, 0xF9, 0xCF, 0x81, 0xF7, 0xF1, 0xE0, 0x00, 0xF0,
0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3F,
0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1E, 0x00, 0x00,
0x03, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x03, 0xFF, 0x80, 0x03, 0xFF,
0x80, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x07, 0xFF,
0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xEF, 0xE0, 0x07, 0xEF, 0xE0, 0x0F, 0xEF,
0xE0, 0x0F, 0xEF, 0xE0, 0x0F, 0xEF, 0xE0, 0x0F, 0xE7, 0xF0, 0x0F, 0xC7,
0xF0, 0x1F, 0xC7, 0xF0, 0x1F, 0xC7, 0xF0, 0x1F, 0xC7, 0xF0, 0x1F, 0xC7,
0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF,
0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0x01,
0xFC, 0x7F, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0xFE, 0x00,
0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFE,
0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xCF,
0xC0, 0xFF, 0x3F, 0x01, 0xFE, 0xFC, 0x03, 0xFB, 0xF0, 0x0F, 0xEF, 0xC0,
0x3F, 0xBF, 0x00, 0xFE, 0xFC, 0x03, 0xFB, 0xF0, 0x0F, 0xEF, 0xC0, 0x3F,
0x3F, 0x01, 0xFC, 0xFC, 0x07, 0xF3, 0xF0, 0x7F, 0x8F, 0xFF, 0xFC, 0x3F,
0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x0F, 0xC0, 0xFE, 0x3F, 0x01,
0xFC, 0xFC, 0x03, 0xFB, 0xF0, 0x0F, 0xEF, 0xC0, 0x1F, 0xBF, 0x00, 0x7F,
0xFC, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFE, 0xFC,
0x07, 0xFB, 0xF0, 0x7F, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFC, 0xFF, 0xFF,
0xF3, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00,
0x1F, 0xFC, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF1, 0xFF,
0xFF, 0xC7, 0xFF, 0xFF, 0xBF, 0xC1, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x07,
0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F,
0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0,
0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00,
0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F,
0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80,
0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x0F, 0xEF, 0xF0, 0x7F, 0x9F, 0xFF, 0xFE,
0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x03, 0xFF, 0xF0, 0x07,
0xFF, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x0F, 0xFF,
0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xEF, 0xC0, 0xFF,
0xBF, 0x00, 0xFE, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF,
0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x00,
0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x7F,
0xFC, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x7F, 0xFC,
0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x7F, 0xFC, 0x01,
0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x7F, 0xFC, 0x03, 0xFB,
0xF0, 0x3F, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF,
0xFF, 0x8F, 0xFF, 0xF8, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0,
0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE,
0x00, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0xFF, 0xFF, 0x8F,
0xFF, 0xF8, 0xFF, 0xFF, 0x8F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00,
0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00,
0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00,
0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00,
0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0xFF, 0xFF, 0xCF, 0xFF,
0xFC, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0xFF, 0xCF, 0xE0, 0x00, 0xFE,
0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F,
0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00,
0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00,
0x0F, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xFC, 0x07,
0xFF, 0xF8, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xBF, 0xE1,
0xFE, 0xFF, 0x03, 0xFB, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x00,
0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE,
0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xBF, 0x83, 0xFE, 0xFE, 0x0F,
0xFB, 0xF8, 0x3F, 0xEF, 0xE0, 0xFF, 0xBF, 0x83, 0xFE, 0xFE, 0x01, 0xFB,
0xF8, 0x07, 0xEF, 0xE0, 0x1F, 0xBF, 0x80, 0x7E, 0xFE, 0x01, 0xFB, 0xF8,
0x07, 0xEF, 0xE0, 0x1F, 0xBF, 0x80, 0x7E, 0xFE, 0x01, 0xFB, 0xF8, 0x0F,
0xEF, 0xF0, 0x7F, 0x9F, 0xFF, 0xFE, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE3,
0xFF, 0xFF, 0x87, 0xFF, 0xBE, 0x07, 0xFC, 0xF8, 0x02, 0x00, 0x00, 0xFE,
0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01,
0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF,
0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8,
0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0,
0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F,
0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF,
0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80,
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7F,
0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, 0xFE,
0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, 0x01, 0xFC,
0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8,
0x00, 0x7F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xF0,
0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x03, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x00, 0x7F,
0xF0, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00,
0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00,
0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0,
0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F,
0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07,
0xF0, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0x0F,
0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF,
0xFE, 0x0F, 0xFF, 0x00, 0xFE, 0x01, 0xFD, 0xFC, 0x03, 0xFB, 0xF8, 0x0F,
0xE7, 0xF0, 0x1F, 0xCF, 0xE0, 0x7F, 0x1F, 0xC0, 0xFE, 0x3F, 0x83, 0xF8,
0x7F, 0x07, 0xF0, 0xFE, 0x0F, 0xC1, 0xFC, 0x3F, 0x83, 0xF8, 0x7E, 0x07,
0xF1, 0xFC, 0x0F, 0xE3, 0xF0, 0x1F, 0xCF, 0xE0, 0x3F, 0x9F, 0x80, 0x7F,
0x3F, 0x00, 0xFE, 0xFC, 0x01, 0xFD, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF,
0xE0, 0x0F, 0xFF, 0xE0, 0x1F, 0xDF, 0xC0, 0x3F, 0xBF, 0x80, 0x7F, 0x7F,
0x80, 0xFE, 0x7F, 0x01, 0xFC, 0xFF, 0x03, 0xF8, 0xFE, 0x07, 0xF1, 0xFE,
0x0F, 0xE3, 0xFC, 0x1F, 0xC3, 0xF8, 0x3F, 0x87, 0xF8, 0x7F, 0x07, 0xF0,
0xFE, 0x0F, 0xF1, 0xFC, 0x0F, 0xE3, 0xF8, 0x1F, 0xE7, 0xF0, 0x3F, 0xCF,
0xE0, 0x3F, 0x9F, 0xC0, 0x7F, 0xBF, 0x80, 0x7F, 0x7F, 0x00, 0xFF, 0xFE,
0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00,
0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0,
0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03,
0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80,
0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F,
0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00,
0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE,
0x00, 0x07, 0xF0, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFE,
0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0,
0x3F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x87,
0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFD, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFB, 0xFF, 0x7F,
0xF7, 0xFE, 0xFF, 0xEF, 0xF9, 0xFF, 0xCF, 0xF3, 0xFF, 0x9F, 0xE7, 0xFF,
0x3F, 0x8F, 0xFE, 0x3F, 0x1F, 0xFC, 0x7E, 0x3F, 0xF8, 0xF8, 0x7F, 0xF0,
0xF0, 0xFF, 0xE1, 0xE1, 0xFF, 0xC3, 0x83, 0xFF, 0x83, 0x07, 0xFF, 0x06,
0x0F, 0xFE, 0x08, 0x1F, 0xFC, 0x10, 0x3F, 0xF8, 0x00, 0x7F, 0xF0, 0x00,
0xFF, 0xE0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F,
0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF,
0xFE, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF,
0xF0, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF,
0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE,
0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFB, 0xF9, 0xFF, 0xF7, 0xF3,
0xFF, 0xEF, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0x9F, 0xDF, 0xFF, 0x1F, 0xFF,
0xFE, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF,
0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x03, 0xFF, 0xFE,
0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0,
0x1F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x7F, 0x00, 0x10,
0x00, 0x07, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF,
0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x3F, 0xC1, 0xFE, 0x7F, 0x01, 0xFE,
0xFE, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x07, 0xFF,
0xC0, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFC,
0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0,
0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFC, 0x00,
0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x0F,
0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFE, 0x03, 0xFD,
0xFE, 0x0F, 0xF1, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x03,
0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x00, 0x30, 0x00, 0xFF,
0xFE, 0x01, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF,
0xFF, 0x1F, 0xFF, 0xFF, 0x3F, 0x87, 0xFF, 0x7F, 0x01, 0xFE, 0xFE, 0x01,
0xFD, 0xFC, 0x03, 0xFB, 0xF8, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x0F,
0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF,
0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xF7, 0xF0, 0x3F, 0xEF, 0xFF, 0xFF, 0x9F,
0xFF, 0xFF, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xFF,
0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0,
0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00,
0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00,
0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x00,
0x1F, 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x0F,
0xFF, 0xFF, 0x3F, 0xC1, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFF, 0xF8,
0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80,
0x1F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01,
0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F,
0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF,
0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF,
0x00, 0x7F, 0x7F, 0x00, 0xFE, 0xFF, 0x03, 0xFD, 0xFF, 0x9F, 0xF1, 0xFF,
0xFF, 0xE3, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF,
0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F,
0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC,
0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F,
0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x3F, 0x8F, 0xFE, 0x7F, 0x03, 0xFE, 0xFE,
0x03, 0xFD, 0xFC, 0x03, 0xFB, 0xF8, 0x07, 0xF7, 0xF0, 0x0F, 0xEF, 0xE0,
0x1F, 0xDF, 0xC0, 0x3F, 0xBF, 0x80, 0x7F, 0x7F, 0x00, 0xFE, 0xFE, 0x03,
0xFD, 0xFC, 0x07, 0xF3, 0xF8, 0x1F, 0xE7, 0xF0, 0xFF, 0x8F, 0xFF, 0xFE,
0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xC0, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, 0x01,
0xFF, 0xFE, 0x03, 0xFB, 0xFC, 0x07, 0xF7, 0xFC, 0x0F, 0xE7, 0xF8, 0x1F,
0xCF, 0xF8, 0x3F, 0x8F, 0xF0, 0x7F, 0x1F, 0xF0, 0xFE, 0x1F, 0xE1, 0xFC,
0x3F, 0xE3, 0xF8, 0x3F, 0xC7, 0xF0, 0x7F, 0xCF, 0xE0, 0x7F, 0x9F, 0xC0,
0xFF, 0xBF, 0x80, 0xFF, 0x7F, 0x01, 0xFF, 0x00, 0x10, 0x00, 0x07, 0xFF,
0x00, 0x3F, 0xFF, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,
0x1F, 0xFF, 0xFE, 0x3F, 0x81, 0xFC, 0xFE, 0x01, 0xFD, 0xFC, 0x03, 0xFB,
0xF0, 0x07, 0xF7, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F,
0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0xFF,
0xFC, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF,
0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x1F,
0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F,
0xFE, 0x00, 0x7E, 0xFE, 0x00, 0xFD, 0xFC, 0x03, 0xFB, 0xFC, 0x0F, 0xF3,
0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x07,
0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFC, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00,
0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0,
0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F,
0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07,
0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00,
0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00,
0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00,
0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0,
0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE,
0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03,
0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F,
0xFE, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF,
0xE0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE,
0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0,
0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE, 0x00,
0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07,
0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x7F, 0xFF, 0x01, 0xFE,
0xFF, 0x07, 0xFD, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x83,
0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x01, 0xFF, 0xC0, 0x00, 0x10, 0x00, 0xFE,
0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xDF, 0xC0, 0x0F, 0xEF, 0xE0, 0x07, 0xF7,
0xF0, 0x03, 0xF3, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE,
0x3F, 0x80, 0x7F, 0x1F, 0xC0, 0x3F, 0x0F, 0xF0, 0x3F, 0x83, 0xF8, 0x1F,
0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC3,
0xF8, 0x0F, 0xE1, 0xFC, 0x07, 0xF0, 0xFC, 0x03, 0xF8, 0x7E, 0x00, 0xFE,
0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xC0, 0x0F,
0xE7, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00,
0x7F, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80,
0x03, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0,
0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE,
0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0,
0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x0F, 0xEF,
0xE0, 0x03, 0xFB, 0xF8, 0x20, 0xFE, 0x7F, 0x08, 0x3F, 0x9F, 0xC3, 0x0F,
0xE7, 0xF0, 0xC3, 0xF9, 0xFC, 0x30, 0xFE, 0x7F, 0x1C, 0x3F, 0x1F, 0xC7,
0x8F, 0xC7, 0xF1, 0xE3, 0xF1, 0xFC, 0xF9, 0xFC, 0x3F, 0x3E, 0x7F, 0x0F,
0xCF, 0xDF, 0xC3, 0xF3, 0xF7, 0xF0, 0xFD, 0xFD, 0xFC, 0x3F, 0xFF, 0xFE,
0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF,
0xFE, 0x07, 0xFD, 0xFF, 0x81, 0xFF, 0x7F, 0xE0, 0x7F, 0xCF, 0xF8, 0x1F,
0xF3, 0xFC, 0x07, 0xFC, 0xFF, 0x01, 0xFE, 0x3F, 0xC0, 0x7F, 0x8F, 0xF0,
0x0F, 0xE1, 0xFC, 0x03, 0xF8, 0x7F, 0x00, 0xFE, 0x1F, 0xC0, 0x3F, 0x07,
0xE0, 0x0F, 0xC1, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x0F, 0x80, 0x3F,
0x03, 0xE0, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x7F,
0x81, 0xFE, 0x7F, 0x81, 0xFC, 0x3F, 0xC3, 0xFC, 0x3F, 0xC3, 0xF8, 0x1F,
0xC3, 0xF8, 0x1F, 0xE7, 0xF0, 0x1F, 0xE7, 0xF0, 0x0F, 0xE7, 0xF0, 0x0F,
0xFF, 0xE0, 0x07, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x03,
0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x01,
0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03,
0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07,
0xFF, 0xE0, 0x0F, 0xEF, 0xE0, 0x0F, 0xEF, 0xF0, 0x1F, 0xE7, 0xF0, 0x1F,
0xC7, 0xF0, 0x1F, 0xC7, 0xF8, 0x3F, 0xC7, 0xF8, 0x3F, 0x83, 0xFC, 0x7F,
0x83, 0xFC, 0x7F, 0x83, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0xFF,
0x01, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, 0xE7, 0xF8, 0x07, 0xF9,
0xFE, 0x01, 0xFE, 0x7F, 0xC0, 0xFF, 0x0F, 0xF0, 0x3F, 0xC3, 0xFC, 0x0F,
0xE0, 0x7F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF8, 0x7F, 0x00, 0xFF,
0x3F, 0xC0, 0x3F, 0xCF, 0xE0, 0x07, 0xF3, 0xF8, 0x01, 0xFF, 0xFE, 0x00,
0x7F, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0xF8,
0x00, 0x1F, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F,
0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00,
0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00,
0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F,
0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00,
0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00,
0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF,
0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07,
0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01,
0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x00,
0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xE0, 0x00,
0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00,
0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00,
0x00, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0,
0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xFF,
0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF,
0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81,
0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0,
0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E,
0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07,
0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0,
0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8,
0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00,
0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03,
0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03,
0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03,
0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03,
0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03,
0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07,
0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00,
0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F,
0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1,
0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C,
0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07,
0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0,
0x7C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7E, 0x00, 0x01, 0xFC,
0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x7D, 0xF0,
0x00, 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x07, 0xC0,
0x3E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x1F, 0x0F,
0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x07, 0xF0, 0x1F,
0xC0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, 0x00, 0x20, 0x00, 0x0F, 0xFE, 0x00,
0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xE7, 0xFF,
0xFF, 0x9F, 0xC0, 0xFF, 0x06, 0x01, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F,
0xC1, 0xFE, 0x3F, 0x1F, 0xFE, 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x00,
0x3F, 0xFC, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF,
0x7F, 0xFF, 0xFD, 0xFF, 0xFB, 0xF3, 0xFF, 0xCF, 0xC3, 0xFE, 0x3F, 0x00,
0x80, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xE0,
0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00,
0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00,
0x0F, 0xC0, 0x40, 0x1F, 0x87, 0xF8, 0x3F, 0x1F, 0xF8, 0x7E, 0x7F, 0xF8,
0xFD, 0xFF, 0xF9, 0xFB, 0xFF, 0xF3, 0xFF, 0xFF, 0xF7, 0xFC, 0x1F, 0xEF,
0xF0, 0x1F, 0xDF, 0xC0, 0x3F, 0xBF, 0x80, 0x3F, 0x7E, 0x00, 0x7F, 0xFC,
0x00, 0xFF, 0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xC0,
0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x80, 0x7F, 0x7F, 0x00, 0xFE, 0xFF, 0x01,
0xFD, 0xFF, 0x07, 0xFB, 0xFF, 0xFF, 0xF7, 0xEF, 0xFF, 0xCF, 0xDF, 0xFF,
0x9F, 0x9F, 0xFE, 0x3F, 0x1F, 0xF8, 0x7E, 0x1F, 0xE0, 0x00, 0x04, 0x00,
0x00, 0x02, 0x00, 0x00, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0,
0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xF0, 0x38, 0x7F,
0x80, 0x20, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0,
0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00,
0x01, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x87, 0xF8, 0x03,
0x07, 0xFC, 0x0F, 0x0F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE,
0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x40, 0x00,
0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0,
0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00,
0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x08,
0x0F, 0xE0, 0xFE, 0x1F, 0xC7, 0xFF, 0x3F, 0x9F, 0xFF, 0x7F, 0x3F, 0xFE,
0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFB, 0xFC, 0x1F, 0xFF, 0xF0, 0x1F,
0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF,
0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF,
0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFE, 0xFF,
0x07, 0xFD, 0xFF, 0xFD, 0xFB, 0xFF, 0xFB, 0xF3, 0xFF, 0xE7, 0xE3, 0xFF,
0xCF, 0xC7, 0xFF, 0x1F, 0x83, 0xF8, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x10,
0x00, 0x01, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF,
0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, 0x00,
0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFC, 0x00,
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00,
0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00,
0xF8, 0x7F, 0x81, 0xFE, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF,
0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0x80, 0x00, 0x18,
0x00, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF,
0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFE, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF,
0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8,
0x00, 0x00, 0x40, 0x00, 0x07, 0xF0, 0xFC, 0x3F, 0xF1, 0xF8, 0xFF, 0xF3,
0xF3, 0xFF, 0xF7, 0xE7, 0xFF, 0xEF, 0xDF, 0xFF, 0xFF, 0xBF, 0xC1, 0xFF,
0x7F, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF,
0xE0, 0x0F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE,
0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x0F, 0xF7, 0xF0,
0x1F, 0xEF, 0xF0, 0x7F, 0xDF, 0xFF, 0xDF, 0x9F, 0xFF, 0xBF, 0x3F, 0xFE,
0x7E, 0x3F, 0xFC, 0xFC, 0x3F, 0xF1, 0xF8, 0x1F, 0xC3, 0xF0, 0x04, 0x07,
0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x90, 0x00, 0x7E, 0x30, 0x01, 0xFC,
0xF8, 0x07, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x07,
0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x00, 0x30, 0x00, 0xFE, 0x00, 0x03, 0xF8,
0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00,
0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F,
0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x01, 0x03, 0xF8, 0x7F, 0x8F, 0xE3,
0xFF, 0x3F, 0x9F, 0xFE, 0xFE, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xE0, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF,
0x80, 0x3F, 0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80,
0x3F, 0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F,
0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xFE,
0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0x00, 0x40,
0x00, 0x78, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFE, 0x00,
0x3F, 0x00, 0x0F, 0xC0, 0x01, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0xFF, 0xF0,
0x3F, 0xFC, 0x0F, 0xFF, 0x03, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
0x00, 0xFC, 0x00, 0x3F, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x04, 0x00, 0x0F, 0x80,
0x07, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x3F,
0x00, 0x1F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7F, 0xFE, 0x3F, 0xFF, 0x1F, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE3,
0xFF, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F,
0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00,
0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0,
0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F,
0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x03, 0xFB, 0xFF, 0xFD, 0xFF,
0xFE, 0xFF, 0xFE, 0x7F, 0xFF, 0x3F, 0xFF, 0x1F, 0xFE, 0x00, 0xFC, 0x00,
0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03,
0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0,
0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x0F,
0xEF, 0xC0, 0x7F, 0x3F, 0x03, 0xF8, 0xFC, 0x0F, 0xE3, 0xF0, 0x7F, 0x0F,
0xC3, 0xF8, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF3, 0xF8, 0x0F, 0xCF,
0xC0, 0x3F, 0x7F, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0,
0x3F, 0x7F, 0x00, 0xFD, 0xFE, 0x03, 0xF3, 0xFC, 0x0F, 0xCF, 0xF0, 0x3F,
0x1F, 0xE0, 0xFC, 0x3F, 0x83, 0xF0, 0xFF, 0x0F, 0xC1, 0xFE, 0x3F, 0x07,
0xF8, 0xFC, 0x0F, 0xF3, 0xF0, 0x1F, 0xEF, 0xC0, 0x7F, 0xBF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x3F,
0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F,
0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F,
0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F,
0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F,
0x00, 0x20, 0x08, 0x7F, 0x3C, 0x3F, 0x3F, 0xBF, 0x3F, 0xDF, 0xFF, 0x9F,
0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7C,
0x7F, 0xFE, 0x1E, 0x1F, 0xFF, 0x0F, 0x0F, 0xFF, 0x87, 0x87, 0xFF, 0xC3,
0xC3, 0xFF, 0xE1, 0xE1, 0xFF, 0xF0, 0xF0, 0xFF, 0xF8, 0x78, 0x7F, 0xFC,
0x3C, 0x3F, 0xFE, 0x1E, 0x1F, 0xFF, 0x0F, 0x0F, 0xFF, 0x87, 0x87, 0xFF,
0xC3, 0xC3, 0xFF, 0xE1, 0xE1, 0xFF, 0xF0, 0xF0, 0xFF, 0xF8, 0x78, 0x7F,
0xFC, 0x3C, 0x3F, 0xFE, 0x1E, 0x1F, 0xFF, 0x0F, 0x0F, 0xFF, 0x87, 0x87,
0xFF, 0xC3, 0xC3, 0xF0, 0x00, 0x01, 0x03, 0xF8, 0x7F, 0x8F, 0xE3, 0xFF,
0x3F, 0x9F, 0xFE, 0xFE, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xE0, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80,
0x3F, 0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F,
0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xFE,
0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xFE, 0x00,
0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0x00, 0x10, 0x00,
0x01, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0,
0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFC,
0x7F, 0x00, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E,
0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E,
0xFE, 0x00, 0x7E, 0xFE, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE,
0x7F, 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0,
0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00,
0x00, 0x04, 0x01, 0xF8, 0x3F, 0x83, 0xF1, 0xFF, 0x87, 0xE7, 0xFF, 0x8F,
0xCF, 0xFF, 0x9F, 0xBF, 0xFF, 0x3F, 0x7F, 0xFF, 0x7F, 0xC1, 0xFE, 0xFF,
0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0,
0x0F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00,
0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F,
0xFF, 0xF0, 0x7F, 0xBF, 0x7F, 0xFF, 0x7E, 0xFF, 0xFE, 0xFC, 0xFF, 0xF9,
0xF9, 0xFF, 0xE3, 0xF1, 0xFF, 0xC7, 0xE1, 0xFE, 0x0F, 0xC0, 0x60, 0x1F,
0x80, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8,
0x00, 0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80,
0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xE0, 0xFC, 0x7F,
0xF1, 0xF8, 0xFF, 0xF3, 0xF3, 0xFF, 0xE7, 0xEF, 0xFF, 0xEF, 0xDF, 0xFF,
0xDF, 0xBF, 0xC1, 0xFF, 0xFF, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x03,
0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F,
0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF,
0xF0, 0x0F, 0xFF, 0xF0, 0x1F, 0xEF, 0xF0, 0x7F, 0xDF, 0xFF, 0xFF, 0xBF,
0xFF, 0xFF, 0x3F, 0xFE, 0xFE, 0x7F, 0xFD, 0xFC, 0x7F, 0xF3, 0xF8, 0x3F,
0x87, 0xF0, 0x08, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00,
0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07,
0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x02,
0x07, 0xE0, 0xFE, 0x3F, 0x1F, 0xF9, 0xF9, 0xFF, 0xEF, 0xCF, 0xFF, 0xFE,
0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xF0, 0xFE, 0xFF, 0x03, 0xC7, 0xF0, 0x08,
0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8,
0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01,
0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0,
0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x00,
0x00, 0x40, 0x00, 0xFF, 0xE0, 0x3F, 0xFF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF,
0xCF, 0xE0, 0xFE, 0xFC, 0x07, 0xEF, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xE0,
0x00, 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF0, 0x0F,
0xFF, 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF0,
0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xFF, 0xFE,
0x7F, 0xFF, 0xE7, 0xFF, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xE0, 0x00, 0x40,
0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00,
0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF,
0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0x7F,
0xFF, 0xE0, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80,
0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F,
0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00,
0x07, 0xE0, 0x00, 0x3F, 0x80, 0x01, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F,
0xFF, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x1F, 0xFE, 0xFC, 0x00, 0xFF,
0xF0, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0,
0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, 0x03,
0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, 0x03, 0xFF,
0xC0, 0x0F, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0xC0,
0x1F, 0xFF, 0x80, 0x7F, 0xFF, 0x07, 0xFB, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF,
0x8F, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF0, 0x00,
0x08, 0x00, 0xFF, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, 0xC0, 0x0F, 0xCF,
0xF0, 0x0F, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, 0xFF, 0x01, 0xF8,
0x3F, 0x81, 0xFC, 0x1F, 0xC0, 0xFC, 0x0F, 0xE0, 0x7E, 0x03, 0xF8, 0x7F,
0x01, 0xFC, 0x3F, 0x80, 0xFE, 0x1F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF,
0xE0, 0x0F, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF,
0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x03,
0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00,
0x1F, 0xE0, 0x00, 0xFE, 0x08, 0x1F, 0xFF, 0x82, 0x07, 0xFF, 0xE0, 0xC1,
0xFB, 0xF8, 0x30, 0xFE, 0x7F, 0x0C, 0x3F, 0x9F, 0xC3, 0x0F, 0xE7, 0xF1,
0xC3, 0xF1, 0xFC, 0x78, 0xFC, 0x7F, 0x1E, 0x3F, 0x0F, 0xE7, 0x9F, 0xC3,
0xFB, 0xE7, 0xF0, 0xFE, 0xFD, 0xF8, 0x3F, 0xBF, 0x7E, 0x0F, 0xEF, 0xDF,
0x81, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x07, 0xFF,
0xFF, 0x01, 0xFF, 0x7F, 0xC0, 0x3F, 0xDF, 0xF0, 0x0F, 0xF3, 0xFC, 0x03,
0xFC, 0xFE, 0x00, 0xFE, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x07, 0xE1, 0xF8,
0x01, 0xF8, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x7F, 0x00, 0xFE, 0xFE, 0x03,
0xF8, 0xFE, 0x07, 0xF1, 0xFC, 0x1F, 0xC1, 0xFC, 0x3F, 0x81, 0xF8, 0xFE,
0x03, 0xF9, 0xF8, 0x03, 0xF7, 0xF0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0x80,
0x0F, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xE0, 0x00,
0x7F, 0xC0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x1F,
0xBF, 0x80, 0x7F, 0x3F, 0x00, 0xFC, 0x7F, 0x03, 0xF8, 0x7E, 0x07, 0xE0,
0xFE, 0x1F, 0xC0, 0xFC, 0x3F, 0x81, 0xFC, 0xFE, 0x01, 0xFB, 0xFC, 0x03,
0xF8, 0xFF, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, 0xC0, 0x0F, 0xCF, 0xF0,
0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x3F,
0x81, 0xFC, 0x1F, 0xC0, 0xFE, 0x0F, 0xE0, 0x7E, 0x03, 0xF8, 0x3F, 0x01,
0xFC, 0x3F, 0x80, 0xFE, 0x1F, 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0xCF, 0xE0,
0x0F, 0xE7, 0xE0, 0x03, 0xF3, 0xF0, 0x01, 0xFD, 0xF8, 0x00, 0xFF, 0xFC,
0x00, 0x3F, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF,
0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F,
0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01,
0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00,
0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00,
0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7,
0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00,
0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x07,
0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8,
0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00,
0x03, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC,
0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x03, 0xFC, 0x0F, 0xF8,
0x1F, 0xF0, 0x7F, 0xE0, 0xFE, 0x01, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F,
0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0,
0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01,
0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80,
0x1F, 0xC0, 0x3F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0x80, 0x1F, 0x00,
0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F,
0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0,
0x07, 0xC0, 0x0F, 0xC0, 0x1F, 0xC0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7F, 0xC0,
0x7F, 0x80, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0x01, 0xFC, 0x03, 0xFC, 0x07,
0xFC, 0x0F, 0xF8, 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0xC0, 0x0F,
0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0,
0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03,
0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x0F, 0xE0, 0x0F, 0xF8, 0x0F, 0xF0, 0x03,
0xE0, 0x3F, 0xC0, 0xFF, 0x83, 0xF8, 0x07, 0xC0, 0x1F, 0x80, 0x3E, 0x00,
0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F,
0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0,
0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xE0, 0x3F,
0x80, 0x7E, 0x00, 0x0F, 0x80, 0x00, 0x9F, 0xF0, 0x00, 0x5F, 0xFF, 0x00,
0x7F, 0xFF, 0xF0, 0x7F, 0x07, 0xFF, 0xFE, 0x00, 0xFF, 0xFA, 0x00, 0x0F,
0xF9, 0x00, 0x00, 0xF8 };
const GFXglyph monofonto28pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 28, 0, 0 }, // 0x20 ' '
{ 1, 7, 41, 28, 10, -39 }, // 0x21 '!'
{ 37, 11, 13, 28, 8, -39 }, // 0x22 '"'
{ 55, 26, 40, 28, 1, -39 }, // 0x23 '#'
{ 185, 23, 51, 28, 3, -44 }, // 0x24 '$'
{ 332, 28, 42, 28, 0, -40 }, // 0x25 '%'
{ 479, 26, 42, 28, 1, -40 }, // 0x26 '&'
{ 616, 4, 13, 28, 12, -39 }, // 0x27 '''
{ 623, 11, 56, 28, 12, -44 }, // 0x28 '('
{ 700, 12, 56, 28, 4, -44 }, // 0x29 ')'
{ 784, 28, 26, 28, 0, -39 }, // 0x2A '*'
{ 875, 25, 25, 28, 1, -31 }, // 0x2B '+'
{ 954, 8, 15, 28, 9, -7 }, // 0x2C ','
{ 969, 17, 6, 28, 5, -22 }, // 0x2D '-'
{ 982, 7, 10, 28, 10, -8 }, // 0x2E '.'
{ 991, 27, 53, 28, 0, -43 }, // 0x2F '/'
{ 1170, 21, 42, 28, 3, -40 }, // 0x30 '0'
{ 1281, 13, 40, 28, 5, -39 }, // 0x31 '1'
{ 1346, 22, 41, 28, 3, -40 }, // 0x32 '2'
{ 1459, 23, 42, 28, 2, -40 }, // 0x33 '3'
{ 1580, 24, 40, 28, 2, -39 }, // 0x34 '4'
{ 1700, 23, 41, 28, 2, -39 }, // 0x35 '5'
{ 1818, 23, 41, 28, 2, -39 }, // 0x36 '6'
{ 1936, 24, 40, 28, 2, -39 }, // 0x37 '7'
{ 2056, 23, 42, 28, 2, -40 }, // 0x38 '8'
{ 2177, 23, 41, 28, 2, -40 }, // 0x39 '9'
{ 2295, 7, 29, 28, 10, -27 }, // 0x3A ':'
{ 2321, 9, 36, 28, 9, -27 }, // 0x3B ';'
{ 2362, 25, 30, 28, 1, -34 }, // 0x3C '<'
{ 2456, 25, 16, 28, 1, -27 }, // 0x3D '='
{ 2506, 25, 30, 28, 1, -34 }, // 0x3E '>'
{ 2600, 20, 42, 28, 4, -40 }, // 0x3F '?'
{ 2705, 26, 41, 28, 1, -32 }, // 0x40 '@'
{ 2839, 24, 40, 28, 2, -39 }, // 0x41 'A'
{ 2959, 22, 40, 28, 3, -39 }, // 0x42 'B'
{ 3069, 22, 42, 28, 3, -40 }, // 0x43 'C'
{ 3185, 22, 40, 28, 3, -39 }, // 0x44 'D'
{ 3295, 20, 40, 28, 4, -39 }, // 0x45 'E'
{ 3395, 20, 40, 28, 4, -39 }, // 0x46 'F'
{ 3495, 22, 42, 28, 3, -40 }, // 0x47 'G'
{ 3611, 22, 40, 28, 3, -39 }, // 0x48 'H'
{ 3721, 19, 40, 28, 4, -39 }, // 0x49 'I'
{ 3816, 20, 40, 28, 4, -39 }, // 0x4A 'J'
{ 3916, 23, 40, 28, 3, -39 }, // 0x4B 'K'
{ 4031, 21, 40, 28, 4, -39 }, // 0x4C 'L'
{ 4136, 23, 40, 28, 2, -39 }, // 0x4D 'M'
{ 4251, 23, 40, 28, 2, -39 }, // 0x4E 'N'
{ 4366, 23, 42, 28, 2, -40 }, // 0x4F 'O'
{ 4487, 23, 40, 28, 3, -39 }, // 0x50 'P'
{ 4602, 23, 48, 28, 2, -40 }, // 0x51 'Q'
{ 4740, 23, 40, 28, 3, -39 }, // 0x52 'R'
{ 4855, 23, 42, 28, 3, -40 }, // 0x53 'S'
{ 4976, 25, 40, 28, 1, -39 }, // 0x54 'T'
{ 5101, 23, 41, 28, 2, -39 }, // 0x55 'U'
{ 5219, 25, 40, 28, 1, -39 }, // 0x56 'V'
{ 5344, 26, 40, 28, 1, -39 }, // 0x57 'W'
{ 5474, 24, 40, 28, 2, -39 }, // 0x58 'X'
{ 5594, 26, 40, 28, 1, -39 }, // 0x59 'Y'
{ 5724, 25, 40, 28, 1, -39 }, // 0x5A 'Z'
{ 5849, 11, 56, 28, 14, -44 }, // 0x5B '['
{ 5926, 27, 53, 28, 0, -43 }, // 0x5C '\'
{ 6105, 10, 56, 28, 3, -44 }, // 0x5D ']'
{ 6175, 23, 18, 28, 2, -39 }, // 0x5E '^'
{ 6227, 28, 4, 28, 0, 8 }, // 0x5F '_'
{ 6241, 13, 10, 28, 7, -39 }, // 0x60 '`'
{ 6258, 22, 29, 28, 3, -27 }, // 0x61 'a'
{ 6338, 23, 41, 28, 3, -39 }, // 0x62 'b'
{ 6456, 23, 29, 28, 2, -27 }, // 0x63 'c'
{ 6540, 23, 41, 28, 2, -39 }, // 0x64 'd'
{ 6658, 24, 29, 28, 2, -27 }, // 0x65 'e'
{ 6745, 24, 40, 28, 2, -39 }, // 0x66 'f'
{ 6865, 23, 40, 28, 2, -27 }, // 0x67 'g'
{ 6980, 22, 40, 28, 3, -39 }, // 0x68 'h'
{ 7090, 18, 41, 28, 5, -40 }, // 0x69 'i'
{ 7183, 17, 52, 28, 4, -40 }, // 0x6A 'j'
{ 7294, 22, 40, 28, 3, -39 }, // 0x6B 'k'
{ 7404, 12, 40, 28, 6, -39 }, // 0x6C 'l'
{ 7464, 25, 28, 28, 1, -27 }, // 0x6D 'm'
{ 7552, 22, 28, 28, 3, -27 }, // 0x6E 'n'
{ 7629, 24, 29, 28, 2, -27 }, // 0x6F 'o'
{ 7716, 23, 39, 28, 2, -27 }, // 0x70 'p'
{ 7829, 23, 39, 28, 2, -27 }, // 0x71 'q'
{ 7942, 21, 28, 28, 3, -27 }, // 0x72 'r'
{ 8016, 20, 29, 28, 4, -27 }, // 0x73 's'
{ 8089, 21, 35, 28, 3, -34 }, // 0x74 't'
{ 8181, 22, 28, 28, 3, -26 }, // 0x75 'u'
{ 8258, 25, 27, 28, 1, -26 }, // 0x76 'v'
{ 8343, 26, 27, 28, 1, -26 }, // 0x77 'w'
{ 8431, 23, 27, 28, 2, -26 }, // 0x78 'x'
{ 8509, 25, 38, 28, 1, -26 }, // 0x79 'y'
{ 8628, 23, 27, 28, 2, -26 }, // 0x7A 'z'
{ 8706, 15, 56, 28, 10, -44 }, // 0x7B '{'
{ 8811, 4, 53, 28, 12, -43 }, // 0x7C '|'
{ 8838, 15, 56, 28, 3, -44 }, // 0x7D '}'
{ 8943, 25, 8, 28, 1, -23 } }; // 0x7E '~'
const GFXfont monofonto28pt7b PROGMEM = {
(uint8_t *)monofonto28pt7bBitmaps,
(GFXglyph *)monofonto28pt7bGlyphs,
0x20, 0x7E, 66 };
// Approx. 9640 bytes

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,144 @@
const uint8_t monofonto6pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xF0, 0xC0, 0xFC, 0x28, 0xA2, 0x9F, 0x29, 0x4F, 0x94, 0x50,
0x47, 0xA5, 0x0E, 0x38, 0x73, 0xF3, 0x10, 0xC6, 0xAA, 0xAC, 0xEC, 0xD5,
0x55, 0x8C, 0x71, 0x45, 0x1C, 0x63, 0xD9, 0xB6, 0x7C, 0xE0, 0x5A, 0xAA,
0xAD, 0xA5, 0x55, 0x5E, 0x32, 0x9F, 0xCC, 0x49, 0x20, 0x20, 0x8F, 0xC8,
0x20, 0xFA, 0xF0, 0xC0, 0x04, 0x20, 0x82, 0x10, 0x42, 0x08, 0x21, 0x04,
0x20, 0xF9, 0x99, 0x99, 0x99, 0xF0, 0x2F, 0x92, 0x49, 0x20, 0xE9, 0x91,
0x32, 0x64, 0xF0, 0x31, 0x20, 0x82, 0x18, 0x2C, 0xD2, 0x78, 0x18, 0xE3,
0x96, 0x59, 0x6F, 0xC6, 0x18, 0xF4, 0x21, 0x0F, 0x48, 0x76, 0xE0, 0x18,
0xC3, 0x18, 0x79, 0x2C, 0xD2, 0x38, 0xFC, 0x21, 0x86, 0x10, 0xC3, 0x18,
0x60, 0x31, 0xA4, 0x92, 0x31, 0x2C, 0xD2, 0x78, 0x71, 0xAC, 0xD2, 0x78,
0x61, 0x0C, 0x60, 0xC0, 0x30, 0xC0, 0xE8, 0x0C, 0xCC, 0x18, 0x18, 0x10,
0xFC, 0x00, 0x3F, 0xC0, 0xC0, 0xC6, 0x62, 0x00, 0x6F, 0x13, 0x66, 0x00,
0x60, 0x79, 0x38, 0x6D, 0xB6, 0xF8, 0x10, 0x20, 0x30, 0xC3, 0x0C, 0x79,
0xE7, 0x92, 0xCC, 0xFB, 0x99, 0xEB, 0x9B, 0xF0, 0xF9, 0x88, 0x88, 0x8F,
0xF0, 0xFB, 0x99, 0x99, 0x99, 0xF0, 0xF8, 0x88, 0xF8, 0x88, 0xF0, 0xF8,
0x88, 0xF8, 0x88, 0x80, 0xFD, 0x88, 0xB9, 0x99, 0xF0, 0x99, 0x99, 0xF9,
0x99, 0x90, 0xF6, 0x66, 0x66, 0x66, 0xF0, 0x31, 0x11, 0x11, 0x13, 0xE0,
0x9D, 0xA9, 0x4E, 0x52, 0xD6, 0x98, 0x88, 0x88, 0x88, 0x88, 0xF0, 0xCF,
0x3F, 0xFF, 0xFF, 0xFD, 0xF3, 0xCC, 0x9D, 0xDD, 0xFB, 0xBB, 0x90, 0x79,
0x2C, 0xF3, 0xCF, 0x3C, 0xD2, 0x78, 0xF5, 0xA7, 0x39, 0x7A, 0x10, 0x80,
0x79, 0x2C, 0xF3, 0xCF, 0x3C, 0xD2, 0x78, 0x60, 0x80, 0xF5, 0xA7, 0x2F,
0x72, 0x96, 0x98, 0xF4, 0xA1, 0x87, 0x18, 0x7E, 0xF0, 0xFC, 0xC3, 0x0C,
0x30, 0xC3, 0x0C, 0x30, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xD2, 0x78, 0xCD,
0x24, 0x9A, 0x79, 0xE3, 0x0C, 0x30, 0xCF, 0x3D, 0xDE, 0x79, 0xE7, 0x9E,
0x48, 0xCD, 0xE7, 0x8C, 0x30, 0xC7, 0x9E, 0xCC, 0xCD, 0x27, 0x9E, 0x30,
0xC3, 0x0C, 0x30, 0xFC, 0x61, 0x84, 0x30, 0x86, 0x18, 0xFC, 0xEA, 0xAA,
0xAB, 0x81, 0x04, 0x10, 0x20, 0x81, 0x04, 0x10, 0x20, 0x81, 0xD5, 0x55,
0x57, 0x30, 0xC4, 0xB3, 0xFC, 0xD0, 0xF9, 0xF9, 0xBF, 0x84, 0x21, 0x6D,
0x4E, 0x7A, 0xB0, 0x3B, 0x71, 0x86, 0x9C, 0x08, 0x42, 0xD5, 0xE7, 0x2B,
0x68, 0x79, 0x2F, 0xF0, 0x49, 0xE0, 0x7A, 0x11, 0xE4, 0x21, 0x08, 0x40,
0x7A, 0xF3, 0x95, 0xBF, 0x6F, 0x88, 0x8B, 0xD9, 0x99, 0x90, 0x60, 0x0E,
0x66, 0x66, 0xF0, 0x30, 0x0F, 0x33, 0x33, 0x32, 0xE0, 0x88, 0x8B, 0xAE,
0xEB, 0xB0, 0xE4, 0x92, 0x49, 0x20, 0xEB, 0xFE, 0xFB, 0xEF, 0xB0, 0xBD,
0x99, 0x99, 0x31, 0xEC, 0xF3, 0x68, 0xC0, 0xFE, 0xF3, 0x9D, 0xFF, 0x18,
0x6A, 0xF3, 0x95, 0xB4, 0x21, 0xBD, 0x88, 0x88, 0xEB, 0xC3, 0x9F, 0x44,
0xF4, 0x44, 0x47, 0x99, 0x99, 0x9F, 0xCD, 0x26, 0x9E, 0x30, 0xC0, 0xDF,
0x77, 0x9E, 0x79, 0xE0, 0x49, 0xE3, 0x0C, 0x7B, 0x30, 0xCD, 0x26, 0x9E,
0x30, 0xC3, 0x08, 0x78, 0xCC, 0x46, 0x7C, 0x6D, 0x25, 0x92, 0x49, 0x90,
0xFF, 0xE0, 0xD9, 0x24, 0xD2, 0x4B, 0x40, 0xE6, 0xF0 };
const GFXglyph monofonto6pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 6, 0, 0 }, // 0x20 ' '
{ 1, 2, 9, 6, 2, -8 }, // 0x21 '!'
{ 4, 2, 3, 6, 2, -8 }, // 0x22 '"'
{ 5, 6, 9, 6, 0, -8 }, // 0x23 '#'
{ 12, 5, 11, 6, 1, -9 }, // 0x24 '$'
{ 19, 6, 9, 6, 0, -8 }, // 0x25 '%'
{ 26, 6, 9, 6, 0, -8 }, // 0x26 '&'
{ 33, 1, 3, 6, 3, -8 }, // 0x27 '''
{ 34, 2, 12, 6, 3, -9 }, // 0x28 '('
{ 37, 2, 12, 6, 1, -9 }, // 0x29 ')'
{ 40, 6, 6, 6, 0, -8 }, // 0x2A '*'
{ 45, 6, 5, 6, 0, -6 }, // 0x2B '+'
{ 49, 2, 4, 6, 2, -1 }, // 0x2C ','
{ 50, 4, 1, 6, 1, -4 }, // 0x2D '-'
{ 51, 2, 1, 6, 2, 0 }, // 0x2E '.'
{ 52, 6, 12, 6, 0, -9 }, // 0x2F '/'
{ 61, 4, 9, 6, 1, -8 }, // 0x30 '0'
{ 66, 3, 9, 6, 1, -8 }, // 0x31 '1'
{ 70, 4, 9, 6, 1, -8 }, // 0x32 '2'
{ 75, 6, 9, 6, 0, -8 }, // 0x33 '3'
{ 82, 6, 9, 6, 0, -8 }, // 0x34 '4'
{ 89, 5, 9, 6, 1, -8 }, // 0x35 '5'
{ 95, 6, 9, 6, 0, -8 }, // 0x36 '6'
{ 102, 6, 9, 6, 0, -8 }, // 0x37 '7'
{ 109, 6, 9, 6, 0, -8 }, // 0x38 '8'
{ 116, 6, 9, 6, 0, -8 }, // 0x39 '9'
{ 123, 2, 6, 6, 2, -5 }, // 0x3A ':'
{ 125, 2, 7, 6, 2, -5 }, // 0x3B ';'
{ 127, 6, 6, 6, 0, -6 }, // 0x3C '<'
{ 132, 6, 4, 6, 0, -5 }, // 0x3D '='
{ 135, 6, 6, 6, 0, -6 }, // 0x3E '>'
{ 140, 4, 9, 6, 1, -8 }, // 0x3F '?'
{ 145, 6, 9, 6, 0, -6 }, // 0x40 '@'
{ 152, 6, 9, 6, 0, -8 }, // 0x41 'A'
{ 159, 4, 9, 6, 1, -8 }, // 0x42 'B'
{ 164, 4, 9, 6, 1, -8 }, // 0x43 'C'
{ 169, 4, 9, 6, 1, -8 }, // 0x44 'D'
{ 174, 4, 9, 6, 1, -8 }, // 0x45 'E'
{ 179, 4, 9, 6, 1, -8 }, // 0x46 'F'
{ 184, 4, 9, 6, 1, -8 }, // 0x47 'G'
{ 189, 4, 9, 6, 1, -8 }, // 0x48 'H'
{ 194, 4, 9, 6, 1, -8 }, // 0x49 'I'
{ 199, 4, 9, 6, 1, -8 }, // 0x4A 'J'
{ 204, 5, 9, 6, 1, -8 }, // 0x4B 'K'
{ 210, 4, 9, 6, 1, -8 }, // 0x4C 'L'
{ 215, 6, 9, 6, 0, -8 }, // 0x4D 'M'
{ 222, 4, 9, 6, 1, -8 }, // 0x4E 'N'
{ 227, 6, 9, 6, 0, -8 }, // 0x4F 'O'
{ 234, 5, 9, 6, 1, -8 }, // 0x50 'P'
{ 240, 6, 11, 6, 0, -8 }, // 0x51 'Q'
{ 249, 5, 9, 6, 1, -8 }, // 0x52 'R'
{ 255, 5, 9, 6, 1, -8 }, // 0x53 'S'
{ 261, 6, 9, 6, 0, -8 }, // 0x54 'T'
{ 268, 6, 9, 6, 0, -8 }, // 0x55 'U'
{ 275, 6, 9, 6, 0, -8 }, // 0x56 'V'
{ 282, 6, 9, 6, 0, -8 }, // 0x57 'W'
{ 289, 6, 9, 6, 0, -8 }, // 0x58 'X'
{ 296, 6, 9, 6, 0, -8 }, // 0x59 'Y'
{ 303, 6, 9, 6, 0, -8 }, // 0x5A 'Z'
{ 310, 2, 12, 6, 3, -9 }, // 0x5B '['
{ 313, 6, 12, 6, 0, -9 }, // 0x5C '\'
{ 322, 2, 12, 6, 1, -9 }, // 0x5D ']'
{ 325, 6, 4, 6, 0, -8 }, // 0x5E '^'
{ 328, 6, 1, 6, 0, 2 }, // 0x5F '_'
{ 329, 2, 2, 6, 2, -8 }, // 0x60 '`'
{ 330, 4, 6, 6, 1, -5 }, // 0x61 'a'
{ 333, 5, 9, 6, 1, -8 }, // 0x62 'b'
{ 339, 5, 6, 6, 0, -5 }, // 0x63 'c'
{ 343, 5, 9, 6, 0, -8 }, // 0x64 'd'
{ 349, 6, 6, 6, 0, -5 }, // 0x65 'e'
{ 354, 5, 9, 6, 1, -8 }, // 0x66 'f'
{ 360, 5, 8, 6, 0, -5 }, // 0x67 'g'
{ 365, 4, 9, 6, 1, -8 }, // 0x68 'h'
{ 370, 4, 9, 6, 1, -8 }, // 0x69 'i'
{ 375, 4, 11, 6, 1, -8 }, // 0x6A 'j'
{ 381, 4, 9, 6, 1, -8 }, // 0x6B 'k'
{ 386, 3, 9, 6, 1, -8 }, // 0x6C 'l'
{ 390, 6, 6, 6, 0, -5 }, // 0x6D 'm'
{ 395, 4, 6, 6, 1, -5 }, // 0x6E 'n'
{ 398, 6, 6, 6, 0, -5 }, // 0x6F 'o'
{ 403, 5, 8, 6, 0, -5 }, // 0x70 'p'
{ 408, 5, 8, 6, 0, -5 }, // 0x71 'q'
{ 413, 4, 6, 6, 1, -5 }, // 0x72 'r'
{ 416, 4, 6, 6, 1, -5 }, // 0x73 's'
{ 419, 4, 8, 6, 1, -7 }, // 0x74 't'
{ 423, 4, 6, 6, 1, -5 }, // 0x75 'u'
{ 426, 6, 6, 6, 0, -5 }, // 0x76 'v'
{ 431, 6, 6, 6, 0, -5 }, // 0x77 'w'
{ 436, 6, 6, 6, 0, -5 }, // 0x78 'x'
{ 441, 6, 8, 6, 0, -5 }, // 0x79 'y'
{ 447, 5, 6, 6, 0, -5 }, // 0x7A 'z'
{ 451, 3, 12, 6, 2, -9 }, // 0x7B '{'
{ 456, 1, 11, 6, 3, -8 }, // 0x7C '|'
{ 458, 3, 12, 6, 1, -9 }, // 0x7D '}'
{ 463, 6, 2, 6, 0, -5 } }; // 0x7E '~'
const GFXfont monofonto6pt7b PROGMEM = {
(uint8_t *)monofonto6pt7bBitmaps,
(GFXglyph *)monofonto6pt7bGlyphs,
0x20, 0x7E, 14 };
// Approx. 1137 bytes

View File

@ -0,0 +1,168 @@
const uint8_t monofonto8pt7bBitmaps[] PROGMEM = {
0x00, 0xFF, 0xFC, 0xFC, 0x99, 0x99, 0x1A, 0x12, 0x16, 0x7F, 0x24, 0x24,
0x7E, 0xFE, 0x68, 0x48, 0x48, 0x30, 0xC7, 0xF3, 0xC3, 0x0F, 0x1F, 0x3C,
0x30, 0xF3, 0xFC, 0xE3, 0x00, 0xE3, 0xA2, 0xA4, 0xA4, 0xEF, 0x1D, 0x15,
0x25, 0x25, 0x45, 0xC7, 0x38, 0x7C, 0x6C, 0x6C, 0x38, 0x30, 0x7B, 0xCE,
0xCC, 0x7E, 0x7B, 0xFF, 0x23, 0x26, 0x64, 0x4C, 0xC4, 0x44, 0x66, 0x23,
0x4C, 0x66, 0x62, 0x23, 0x32, 0x22, 0x66, 0x4C, 0x18, 0x18, 0xDB, 0xFF,
0x18, 0x34, 0x66, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0xFA, 0xFF,
0xFC, 0x03, 0x02, 0x06, 0x04, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20,
0x20, 0x60, 0x40, 0xC0, 0x7B, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xF7,
0x80, 0x2F, 0xFE, 0xDB, 0x6D, 0xB0, 0x7B, 0xFC, 0xC3, 0x0C, 0x61, 0x8C,
0x71, 0xFF, 0xC0, 0x7B, 0xFC, 0xC3, 0x0C, 0x60, 0xC3, 0xCF, 0xF7, 0x80,
0x18, 0x70, 0xA3, 0x44, 0x99, 0x22, 0x7F, 0xFE, 0x30, 0x60, 0xFF, 0xFC,
0x30, 0xFB, 0xFC, 0xC3, 0x4F, 0xF7, 0x80, 0x18, 0xC3, 0x18, 0x7B, 0xFC,
0xF3, 0xCF, 0xF7, 0x80, 0xFF, 0xF8, 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60,
0xC3, 0x80, 0x7B, 0xFC, 0xF3, 0x7B, 0xFC, 0xE1, 0xCF, 0xF7, 0x80, 0x7B,
0xFC, 0xF3, 0xCF, 0xF7, 0x86, 0x30, 0xC6, 0x00, 0xFC, 0x3F, 0xFC, 0x0F,
0xA0, 0x01, 0x07, 0x1C, 0x60, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0xFF,
0x00, 0x00, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x0E, 0x38, 0xE0,
0x80, 0x7B, 0xFC, 0xC3, 0x18, 0xC3, 0x00, 0x20, 0xC3, 0x00, 0x3C, 0x62,
0x41, 0xC1, 0x9D, 0x95, 0x95, 0xDE, 0x40, 0x60, 0x30, 0x10, 0x30, 0xC7,
0x9E, 0x79, 0xE5, 0xBF, 0xFF, 0x3C, 0xC0, 0xFB, 0xFC, 0xF3, 0xCF, 0xCC,
0xF3, 0xCF, 0xFF, 0x80, 0x7B, 0xFC, 0xF0, 0xC3, 0x0C, 0x30, 0xCF, 0xF7,
0x80, 0xFB, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0x80, 0xFF, 0xFC,
0x30, 0xFB, 0xEC, 0x30, 0xC3, 0xFF, 0xC0, 0xFF, 0xFC, 0x30, 0xFB, 0xEC,
0x30, 0xC3, 0x0C, 0x00, 0x7B, 0xFC, 0xF0, 0xDF, 0x7C, 0xF3, 0xCF, 0xF7,
0x40, 0xCF, 0x3C, 0xF3, 0xFF, 0xFC, 0xF3, 0xCF, 0x3C, 0xC0, 0xFF, 0xF3,
0x0C, 0x30, 0xC3, 0x0C, 0x33, 0xFF, 0xC0, 0x1C, 0x70, 0xC3, 0x0C, 0x30,
0xC3, 0x0F, 0xEF, 0x80, 0xCD, 0x9B, 0x66, 0xCF, 0x1E, 0x3C, 0x6C, 0xD9,
0x9B, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0xFF, 0xC0, 0xCF,
0x3C, 0xFF, 0xFE, 0xDB, 0x6D, 0x96, 0x18, 0x40, 0xCF, 0xBE, 0xFB, 0xFF,
0xFF, 0xF7, 0xDF, 0x3C, 0xC0, 0x7B, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF,
0xF7, 0x80, 0xF9, 0xFB, 0x36, 0x7C, 0xDF, 0xBE, 0x60, 0xC1, 0x83, 0x00,
0x7B, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xF7, 0x86, 0x0C, 0xF9, 0xFB,
0x36, 0x6C, 0xDF, 0xBC, 0x7C, 0xD9, 0xBB, 0x38, 0x7B, 0xFC, 0xF0, 0xF1,
0xE1, 0xC3, 0xCF, 0xF7, 0x80, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xF7,
0x80, 0xE3, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x3C, 0x3C, 0x18, 0x18,
0xC3, 0xC3, 0xCB, 0x6E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x66, 0x24, 0xE7,
0x66, 0x3C, 0x3C, 0x3C, 0x18, 0x3C, 0x3C, 0x3C, 0x66, 0xE7, 0xE7, 0x66,
0x66, 0x3C, 0x3C, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7F, 0x7E, 0x0C,
0x0C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x7E, 0xFE, 0xFF, 0x6D, 0xB6, 0xDB,
0x6D, 0xBF, 0xC0, 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C,
0x04, 0x04, 0x06, 0x02, 0x03, 0xFD, 0xB6, 0xDB, 0x6D, 0xB6, 0xFF, 0x31,
0xE4, 0xB3, 0x84, 0xFF, 0xFF, 0xE6, 0x30, 0x7B, 0xF0, 0xDF, 0xFF, 0x3F,
0x5D, 0xC3, 0x0C, 0x36, 0xFF, 0x3C, 0x71, 0xCF, 0xFD, 0x80, 0x3F, 0xFC,
0x30, 0xC3, 0x1F, 0xDF, 0x0C, 0x30, 0xDB, 0xFF, 0x3C, 0xF3, 0xCF, 0xF6,
0xC0, 0x3C, 0x7E, 0x66, 0x7F, 0xE0, 0x64, 0x7E, 0x3C, 0x3D, 0xF6, 0x3E,
0xF9, 0x86, 0x18, 0x61, 0x86, 0x00, 0x7F, 0xFC, 0xF3, 0xCF, 0x3F, 0xDF,
0x8F, 0xF7, 0x80, 0xC3, 0x0C, 0x37, 0xFF, 0x3C, 0xF3, 0xCF, 0x3C, 0xC0,
0x30, 0xC0, 0x3C, 0xF0, 0xC3, 0x0C, 0x33, 0xFF, 0xC0, 0x18, 0xC0, 0xF7,
0x8C, 0x63, 0x18, 0xC6, 0x3F, 0xF8, 0xC3, 0x0C, 0x33, 0xDB, 0xCF, 0x3C,
0xDB, 0x6C, 0xC0, 0xFD, 0xB6, 0xDB, 0x6D, 0x80, 0xD6, 0xFF, 0xDB, 0xDB,
0xDB, 0xDB, 0xDB, 0xDB, 0xDF, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0x7B, 0xFC,
0xF3, 0xCF, 0x3F, 0xDE, 0xBA, 0xFC, 0xE3, 0x8F, 0x3B, 0xEE, 0x82, 0x08,
0x00, 0x6F, 0xFC, 0xF3, 0xCF, 0x3F, 0xDB, 0x0C, 0x30, 0xC0, 0xDB, 0xFC,
0xB0, 0xC3, 0x0C, 0x30, 0x7B, 0x3C, 0x1E, 0x3C, 0x3C, 0xDE, 0x20, 0x8F,
0xBE, 0x20, 0x82, 0x08, 0x3C, 0xF0, 0xCF, 0x3C, 0xF3, 0xCF, 0x3F, 0xDE,
0xE3, 0x66, 0x66, 0x36, 0x3C, 0x3C, 0x3C, 0x18, 0xCB, 0x6A, 0x7E, 0x7E,
0x7E, 0x7E, 0x3E, 0x24, 0xCD, 0x27, 0x8C, 0x31, 0xEC, 0xF3, 0xE3, 0x66,
0x66, 0x36, 0x3C, 0x3C, 0x3C, 0x18, 0x18, 0x18, 0x30, 0xFF, 0xE1, 0x8C,
0x31, 0x8F, 0xFF, 0x37, 0x66, 0x66, 0x6C, 0xC6, 0x66, 0x66, 0x73, 0xFF,
0xFF, 0xFF, 0xFC, 0xCE, 0x66, 0x66, 0x63, 0x36, 0x66, 0x66, 0xEC, 0x61,
0xFF, 0x8E };
const GFXglyph monofonto8pt7bGlyphs[] PROGMEM = {
{ 0, 1, 1, 8, 0, 0 }, // 0x20 ' '
{ 1, 2, 11, 8, 3, -10 }, // 0x21 '!'
{ 4, 4, 4, 8, 2, -10 }, // 0x22 '"'
{ 6, 8, 11, 8, 0, -10 }, // 0x23 '#'
{ 17, 6, 15, 8, 1, -12 }, // 0x24 '$'
{ 29, 8, 11, 8, 0, -10 }, // 0x25 '%'
{ 40, 8, 11, 8, 0, -10 }, // 0x26 '&'
{ 51, 2, 4, 8, 3, -10 }, // 0x27 '''
{ 52, 4, 16, 8, 3, -12 }, // 0x28 '('
{ 60, 4, 16, 8, 1, -12 }, // 0x29 ')'
{ 68, 8, 7, 8, 0, -10 }, // 0x2A '*'
{ 75, 8, 7, 8, 0, -8 }, // 0x2B '+'
{ 82, 2, 4, 8, 3, -1 }, // 0x2C ','
{ 83, 4, 2, 8, 2, -6 }, // 0x2D '-'
{ 84, 2, 3, 8, 3, -2 }, // 0x2E '.'
{ 85, 8, 15, 8, 0, -11 }, // 0x2F '/'
{ 100, 6, 11, 8, 1, -10 }, // 0x30 '0'
{ 109, 3, 12, 8, 2, -11 }, // 0x31 '1'
{ 114, 6, 11, 8, 1, -10 }, // 0x32 '2'
{ 123, 6, 11, 8, 1, -10 }, // 0x33 '3'
{ 132, 7, 11, 8, 1, -10 }, // 0x34 '4'
{ 142, 6, 11, 8, 1, -10 }, // 0x35 '5'
{ 151, 6, 11, 8, 1, -10 }, // 0x36 '6'
{ 160, 7, 11, 8, 1, -10 }, // 0x37 '7'
{ 170, 6, 11, 8, 1, -10 }, // 0x38 '8'
{ 179, 6, 11, 8, 1, -10 }, // 0x39 '9'
{ 188, 2, 8, 8, 3, -7 }, // 0x3A ':'
{ 190, 2, 10, 8, 3, -7 }, // 0x3B ';'
{ 193, 8, 9, 8, 0, -9 }, // 0x3C '<'
{ 202, 8, 6, 8, 0, -7 }, // 0x3D '='
{ 208, 8, 9, 8, 0, -9 }, // 0x3E '>'
{ 217, 6, 11, 8, 1, -10 }, // 0x3F '?'
{ 226, 8, 12, 8, 0, -8 }, // 0x40 '@'
{ 238, 6, 11, 8, 1, -10 }, // 0x41 'A'
{ 247, 6, 11, 8, 1, -10 }, // 0x42 'B'
{ 256, 6, 11, 8, 1, -10 }, // 0x43 'C'
{ 265, 6, 11, 8, 1, -10 }, // 0x44 'D'
{ 274, 6, 11, 8, 1, -10 }, // 0x45 'E'
{ 283, 6, 11, 8, 1, -10 }, // 0x46 'F'
{ 292, 6, 11, 8, 1, -10 }, // 0x47 'G'
{ 301, 6, 11, 8, 1, -10 }, // 0x48 'H'
{ 310, 6, 11, 8, 1, -10 }, // 0x49 'I'
{ 319, 6, 11, 8, 1, -10 }, // 0x4A 'J'
{ 328, 7, 11, 8, 1, -10 }, // 0x4B 'K'
{ 338, 6, 11, 8, 1, -10 }, // 0x4C 'L'
{ 347, 6, 11, 8, 1, -10 }, // 0x4D 'M'
{ 356, 6, 11, 8, 1, -10 }, // 0x4E 'N'
{ 365, 6, 11, 8, 1, -10 }, // 0x4F 'O'
{ 374, 7, 11, 8, 1, -10 }, // 0x50 'P'
{ 384, 6, 13, 8, 1, -10 }, // 0x51 'Q'
{ 394, 7, 11, 8, 1, -10 }, // 0x52 'R'
{ 404, 6, 11, 8, 1, -10 }, // 0x53 'S'
{ 413, 8, 11, 8, 0, -10 }, // 0x54 'T'
{ 424, 6, 11, 8, 1, -10 }, // 0x55 'U'
{ 433, 8, 11, 8, 0, -10 }, // 0x56 'V'
{ 444, 8, 11, 8, 0, -10 }, // 0x57 'W'
{ 455, 8, 11, 8, 0, -10 }, // 0x58 'X'
{ 466, 8, 11, 8, 0, -10 }, // 0x59 'Y'
{ 477, 8, 11, 8, 0, -10 }, // 0x5A 'Z'
{ 488, 3, 16, 8, 4, -12 }, // 0x5B '['
{ 494, 8, 15, 8, 0, -11 }, // 0x5C '\'
{ 509, 3, 16, 8, 1, -12 }, // 0x5D ']'
{ 515, 6, 5, 8, 1, -10 }, // 0x5E '^'
{ 519, 8, 2, 8, 0, 2 }, // 0x5F '_'
{ 521, 4, 3, 8, 2, -10 }, // 0x60 '`'
{ 523, 6, 8, 8, 1, -7 }, // 0x61 'a'
{ 529, 6, 11, 8, 1, -10 }, // 0x62 'b'
{ 538, 6, 8, 8, 1, -7 }, // 0x63 'c'
{ 544, 6, 11, 8, 1, -10 }, // 0x64 'd'
{ 553, 8, 8, 8, 0, -7 }, // 0x65 'e'
{ 561, 6, 11, 8, 1, -10 }, // 0x66 'f'
{ 570, 6, 11, 8, 1, -7 }, // 0x67 'g'
{ 579, 6, 11, 8, 1, -10 }, // 0x68 'h'
{ 588, 6, 11, 8, 1, -10 }, // 0x69 'i'
{ 597, 5, 14, 8, 1, -10 }, // 0x6A 'j'
{ 606, 6, 11, 8, 1, -10 }, // 0x6B 'k'
{ 615, 3, 11, 8, 2, -10 }, // 0x6C 'l'
{ 620, 8, 8, 8, 0, -7 }, // 0x6D 'm'
{ 628, 6, 8, 8, 1, -7 }, // 0x6E 'n'
{ 634, 6, 8, 8, 1, -7 }, // 0x6F 'o'
{ 640, 6, 11, 8, 1, -7 }, // 0x70 'p'
{ 649, 6, 11, 8, 1, -7 }, // 0x71 'q'
{ 658, 6, 8, 8, 1, -7 }, // 0x72 'r'
{ 664, 6, 8, 8, 1, -7 }, // 0x73 's'
{ 670, 6, 10, 8, 1, -9 }, // 0x74 't'
{ 678, 6, 8, 8, 1, -7 }, // 0x75 'u'
{ 684, 8, 8, 8, 0, -7 }, // 0x76 'v'
{ 692, 8, 8, 8, 0, -7 }, // 0x77 'w'
{ 700, 6, 8, 8, 1, -7 }, // 0x78 'x'
{ 706, 8, 11, 8, 0, -7 }, // 0x79 'y'
{ 717, 6, 8, 8, 1, -7 }, // 0x7A 'z'
{ 723, 4, 16, 8, 3, -12 }, // 0x7B '{'
{ 731, 2, 15, 8, 3, -11 }, // 0x7C '|'
{ 735, 4, 16, 8, 1, -12 }, // 0x7D '}'
{ 743, 8, 3, 8, 0, -7 } }; // 0x7E '~'
const GFXfont monofonto8pt7b PROGMEM = {
(uint8_t *)monofonto8pt7bBitmaps,
(GFXglyph *)monofonto8pt7bGlyphs,
0x20, 0x7E, 19 };
// Approx. 1418 bytes

View File

@ -0,0 +1,10 @@
#include "WatchyPipBoy.h"
#include "settings.h"
WatchyPipBoy watchy(settings);
void setup(){
watchy.init();
}
void loop(){}

View File

@ -0,0 +1,27 @@
#ifndef SETTINGS_H
#define SETTINGS_H
//Weather Settings
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id=" //open weather api
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
#define TEMP_LANG "en"
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
//NTP Settings
#define NTP_SERVER "pool.ntp.org"
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
watchySettings settings{
.cityID = CITY_ID,
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
.weatherURL = OPENWEATHERMAP_URL,
.weatherUnit = TEMP_UNIT,
.weatherLang = TEMP_LANG,
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
.ntpServer = NTP_SERVER,
.gmtOffset = GMT_OFFSET_SEC,
.vibrateOClock = true,
};
#endif

96
src/MoonPhase.cpp Normal file
View File

@ -0,0 +1,96 @@
// Calculate the phase and position of the moon for a given date.
// The algorithm is simple and adequate for many purposes.
//
// This software was originally adapted to javascript by Stephen R. Schmitt
// from a BASIC program from the 'Astronomical Computing' column of Sky & Telescope,
// April 1994, page 86, written by Bradley E. Schaefer.
//
// Subsequently adapted from Stephen R. Schmitt's javascript to c++ for the Arduino
// by Cyrus Rahman, this work is subject to Stephen Schmitt's copyright:
//
// Copyright 2004 Stephen R. Schmitt
// You may use or modify this source code in any way you find useful, provided
// that you agree that the author(s) have no warranty, obligations or liability. You
// must determine the suitability of this source code for your use.
#include <math.h>
#include "MoonPhase.h"
// Names of lunar phases
static const char *phaseNames[] = {"New", "Evening Crescent", "First Quarter",
"Waxing Gibbous", "Full", "Waning Gibbous",
"Last Quarter", "Morning Crescent"};
// Names of Zodiac constellations
static const char *zodiacNames[] = {"Pisces", "Aries", "Taurus", "Gemini", "Cancer",
"Leo", "Virgo", "Libra", "Scorpio", "Sagittarius",
"Capricorn", "Aquarius"};
// Ecliptic angles of Zodiac constellations
static const float zodiacAngles[] = {33.18, 51.16, 93.44, 119.48, 135.30, 173.34,
224.17, 242.57, 271.26, 302.49, 311.72, 348.58};
// Constructor initialization.
MoonPhase::MoonPhase() {
jDate = 0;
phase = 0;
age = 0;
fraction = 0;
distance = 0;
latitude = 0;
longitude = 0;
phaseName = zodiacName = "";
}
// Determine the Moon Phase and orbital positions for the specified time.
void
MoonPhase::calculate(time_t t) {
jDate = julianDate(t);
// Calculate illumination (synodic) phase.
// From number of days since new moon on Julian date MOON_SYNODIC_OFFSET
// (1815UTC January 6, 2000), determine remainder of incomplete cycle.
phase = (jDate - MOON_SYNODIC_OFFSET) / MOON_SYNODIC_PERIOD;
phase -= floor(phase);
// Calculate age and illumination fraction.
age = phase * MOON_SYNODIC_PERIOD;
fraction = (1.0 - cos(2 * M_PI * phase)) * 0.5;
phaseName = phaseNames[(int)(phase * 8 + 0.5) % 8];
// Calculate distance from anomalistic phase.
double distancePhase = (jDate - MOON_DISTANCE_OFFSET) / MOON_DISTANCE_PERIOD;
distancePhase -= floor(distancePhase);
distance = 60.4 - 3.3 * cos(2 * M_PI * distancePhase)
- 0.6 * cos(2 * 2 * M_PI * phase - 2 * M_PI * distancePhase)
- 0.5 * cos(2 * 2 * M_PI * phase);
// Calculate ecliptic latitude from nodal (draconic) phase.
double latPhase = (jDate - MOON_LATITUDE_OFFSET) / MOON_LATITUDE_PERIOD;
latPhase -= floor(latPhase);
latitude = 5.1 * sin(2 * M_PI * latPhase);
// Calculate ecliptic longitude from sidereal motion.
double longPhase = (jDate - MOON_LONGITUDE_OFFSET) / MOON_LONGITUDE_PERIOD;
longPhase -= floor(longPhase);
longitude = 360 * longPhase
+ 6.3 * sin(2 * M_PI * distancePhase)
+ 1.3 * sin(2 * 2 * M_PI * phase - 2 * M_PI * distancePhase)
+ 0.7 * sin(2 * 2 * M_PI * phase);
if (longitude > 360)
longitude -= 360;
// Select the Zodiac name.
zodiacName = zodiacNames[0];
for (int i = 0; i < sizeof(zodiacAngles) / sizeof(float); i++) {
if (longitude < zodiacAngles[i]) {
zodiacName = zodiacNames[i];
break;
}
}
}
// Determine Julian date from Unix time.
// Provides marginally accurate results with older Arduino 4-byte double.
double
MoonPhase::julianDate(time_t t) {
return (t / 86400.0L + 2440587.5);
}

33
src/MoonPhase.h Normal file
View File

@ -0,0 +1,33 @@
#ifndef MoonPhase_h
#define MoonPhase_h
#include <time.h>
#define MOON_SYNODIC_PERIOD 29.530588853 // Period of moon cycle in days.
#define MOON_SYNODIC_OFFSET 2451550.26 // Reference cycle offset in days.
#define MOON_DISTANCE_PERIOD 27.55454988 // Period of distance oscillation
#define MOON_DISTANCE_OFFSET 2451562.2
#define MOON_LATITUDE_PERIOD 27.212220817 // Latitude oscillation
#define MOON_LATITUDE_OFFSET 2451565.2
#define MOON_LONGITUDE_PERIOD 27.321582241 // Longitude oscillation
#define MOON_LONGITUDE_OFFSET 2451555.8
class MoonPhase {
public:
double jDate;
double phase; // 0 - 1, 0.5 = full
double age; // Age in days of current cycle
double fraction; // Fraction of illuminated disk
double distance; // Moon distance in earth radii
double latitude; // Moon ecliptic latitude
double longitude; // Moon ecliptic longitude
const char *phaseName; // New, Full, etc.
const char *zodiacName; // Constellation
MoonPhase();
void calculate(time_t);
private:
double julianDate(time_t);
};
#endif

View File

@ -1,6 +1,7 @@
#ifndef TIMEZONES_GMT_H
#define TIMEZONES_GMT_H
// This file is used to set up GMT based timezones.
// You don't need to change anything here to be able to set up GMT based time.
// If you set TIMEZONES_NON_GMT_OVERRIDE to 1 (as for get summer time and leaps),
@ -10,11 +11,14 @@
// Visit the link below.
#ifndef TIMEZONES_NON_GMT_OVERRIDE
#define TIMEZONES_NON_GMT_OVERRIDE 0
#define TIMEZONES_NON_GMT_OVERRIDE 0 // 0: GMT, 1: Location timezone.
#endif
#ifndef TIMEZONES_SELECTED
#define TIMEZONES_SELECTED 0 // If above is 0, value is index of array below.
#endif // Etc/GMT0
#define TIMEZONES_LENGTH 28
#define TIMEZONES_SELECTED 0
typedef struct TZ {
const char* location;
@ -22,44 +26,47 @@ typedef struct TZ {
} TZ;
#ifdef TIMEZONES_NON_GMT_OVERRIDE
// https://raw.githubusercontent.com/nayarsystems/posix_tz_db/master/zones.csv
static TZ tz_override = {
"Europe/Madrid",
"CET-1CEST,M3.5.0,M10.5.0/3"
};
#endif
static TZ timeZones[] = {
{"Etc/GMT+0","GMT0"}, // 0
{"Etc/GMT+1","<-01>1"}, // 1
{"Etc/GMT+2","<-02>2"}, // 2
{"Etc/GMT+3","<-03>3"}, // 3
{"Etc/GMT+4","<-04>4"}, // 4
{"Etc/GMT+5","<-05>5"}, // 5
{"Etc/GMT+6","<-06>6"}, // 6
{"Etc/GMT+7","<-07>7"}, // 7
{"Etc/GMT+8","<-08>8"}, // 8
{"Etc/GMT+9","<-09>9"}, // 9
{"Etc/GMT+10","<-10>10"}, // 10
{"Etc/GMT+11","<-11>11"}, // 11
{"Etc/GMT+12","<-12>12"}, // 12
{"Etc/GMT-0","GMT0"}, // 13
{"Etc/GMT-1","<+01>-1"}, // 14
{"Etc/GMT-2","<+02>-2"}, // 15
{"Etc/GMT-3","<+03>-3"}, // 16
{"Etc/GMT-4","<+04>-4"}, // 17
{"Etc/GMT-5","<+05>-5"}, // 18
{"Etc/GMT-6","<+06>-6"}, // 19
{"Etc/GMT-7","<+07>-7"}, // 20
{"Etc/GMT-8","<+08>-8"}, // 21
{"Etc/GMT-9","<+09>-9"}, // 22
{"Etc/GMT-10","<+10>-10"}, // 23
{"Etc/GMT-11","<+11>-11"}, // 24
{"Etc/GMT-12","<+12>-12"}, // 25
{"Etc/GMT-13","<+13>-13"}, // 26
{"Etc/GMT-14","<+14>-14"}, // 27
{"Etc/GMT+0","GMT0"}, // 0
{"Etc/GMT+1","<-01>1"}, // 1
{"Etc/GMT+2","<-02>2"}, // 2
{"Etc/GMT+3","<-03>3"}, // 3
{"Etc/GMT+4","<-04>4"}, // 4
{"Etc/GMT+5","<-05>5"}, // 5
{"Etc/GMT+6","<-06>6"}, // 6
{"Etc/GMT+7","<-07>7"}, // 7
{"Etc/GMT+8","<-08>8"}, // 8
{"Etc/GMT+9","<-09>9"}, // 9
{"Etc/GMT+10","<-10>10"}, // 10
{"Etc/GMT+11","<-11>11"}, // 11
{"Etc/GMT+12","<-12>12"}, // 12
{"Etc/GMT-0","GMT0"}, // 13
{"Etc/GMT-1","<+01>-1"}, // 14
{"Etc/GMT-2","<+02>-2"}, // 15
{"Etc/GMT-3","<+03>-3"}, // 16
{"Etc/GMT-4","<+04>-4"}, // 17
{"Etc/GMT-5","<+05>-5"}, // 18
{"Etc/GMT-6","<+06>-6"}, // 19
{"Etc/GMT-7","<+07>-7"}, // 20
{"Etc/GMT-8","<+08>-8"}, // 21
{"Etc/GMT-9","<+09>-9"}, // 22
{"Etc/GMT-10","<+10>-10"}, // 23
{"Etc/GMT-11","<+11>-11"}, // 24
{"Etc/GMT-12","<+12>-12"}, // 25
{"Etc/GMT-13","<+13>-13"}, // 26
{"Etc/GMT-14","<+14>-14"}, // 27
};
static long OFFSETS_SEC[] = {
0, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, 32400, 36000, 39600, 43200, 0, -3600, -7200, -10800, -14400, -18000, -21600, -25200, -28800, -32400, -36000, -39600, -43200, -46800, -50400
};
static int8_t tzIndex = TIMEZONES_SELECTED;
#endif //TIMEZONES_GMT_H

View File

@ -12,7 +12,7 @@ GxEPD2_BW<WatchyDisplay, WatchyDisplay::HEIGHT> Watchy::display(
RTC_DATA_ATTR int guiState;
RTC_DATA_ATTR int menuIndex;
RTC_DATA_ATTR BMA423 sensor;
RTC_DATA_ATTR BMA423 sensor;
RTC_DATA_ATTR bool WIFI_CONFIGURED;
RTC_DATA_ATTR bool BLE_CONFIGURED;
RTC_DATA_ATTR weatherData currentWeather;
@ -27,6 +27,7 @@ RTC_DATA_ATTR bool USB_PLUGGED_IN = false;
RTC_DATA_ATTR tmElements_t bootTime;
RTC_DATA_ATTR uint32_t lastIPAddress;
RTC_DATA_ATTR char lastSSID[30];
RTC_DATA_ATTR MoonPhase mp;
void Watchy::init(String datetime) {
esp_sleep_wakeup_cause_t wakeup_reason;
@ -36,10 +37,11 @@ void Watchy::init(String datetime) {
#else
Wire.begin(SDA, SCL); // init i2c
#endif
RTC.init();
// Init the display since is almost sure we will use it
display.epd2.initWatchy();
mp = MoonPhase();
switch (wakeup_reason) {
#ifdef ARDUINO_ESP32S3_DEV
case ESP_SLEEP_WAKEUP_TIMER: // RTC Alarm
@ -87,8 +89,8 @@ void Watchy::init(String datetime) {
#ifdef ARDUINO_ESP32S3_DEV
pinMode(USB_DET_PIN, INPUT);
USB_PLUGGED_IN = (digitalRead(USB_DET_PIN) == 1);
#endif
gmtOffset = settings.gmtOffset;
#endif
gmtOffset = settings.gmtOffset;
RTC.read(currentTime);
RTC.read(bootTime);
showWatchFace(false); // full update on reset
@ -97,6 +99,9 @@ void Watchy::init(String datetime) {
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL);
break;
}
time_t epoch = makeTime(currentTime);
mp.calculate(epoch);
deepSleep();
}
void Watchy::deepSleep() {
@ -167,6 +172,8 @@ void Watchy::handleButtonPress() {
case 6:
showSyncNTP();
break;
case 7:
showMoonPhase();
default:
break;
}
@ -249,6 +256,8 @@ void Watchy::handleButtonPress() {
case 6:
showSyncNTP();
break;
case 7:
showMoonPhase();
default:
break;
}
@ -302,9 +311,9 @@ void Watchy::showMenu(byte menuIndex, bool partialRefresh) {
const char *menuItems[] = {
"About Watchy", "Vibrate Motor", "Show Accelerometer",
"Set Time", "Setup WiFi", "Update Firmware",
"Sync NTP"};
"Sync NTP", "Moon Phase"};
for (int i = 0; i < MENU_LENGTH; i++) {
yPos = MENU_HEIGHT + (MENU_HEIGHT * i);
yPos = MENU_HEIGHT/2 + (MENU_HEIGHT * i);
display.setCursor(0, yPos);
if (i == menuIndex) {
display.getTextBounds(menuItems[i], 0, yPos, &x1, &y1, &w, &h);
@ -335,9 +344,9 @@ void Watchy::showFastMenu(byte menuIndex) {
const char *menuItems[] = {
"About Watchy", "Vibrate Motor", "Show Accelerometer",
"Set Time", "Setup WiFi", "Update Firmware",
"Sync NTP"};
"Sync NTP", "Moon Phase"};
for (int i = 0; i < MENU_LENGTH; i++) {
yPos = MENU_HEIGHT + (MENU_HEIGHT * i);
yPos = MENU_HEIGHT/2 + (MENU_HEIGHT * i);
display.setCursor(0, yPos);
if (i == menuIndex) {
display.getTextBounds(menuItems[i], 0, yPos, &x1, &y1, &w, &h);
@ -404,6 +413,57 @@ void Watchy::showAbout() {
guiState = APP_STATE;
}
void Watchy::showMoonPhase() {
RTC.read(currentTime);
time_t epoch = makeTime(currentTime);
mp.calculate(epoch);
display.setFullWindow();
display.fillScreen(GxEPD_BLACK);
display.setFont(&FreeMonoBold9pt7b);
display.setTextColor(GxEPD_WHITE);
display.setCursor(0, 10);
display.setCursor(0, MENU_HEIGHT);
display.print("Date: ");
display.println(mp.jDate);
display.print("Phase: ");
display.println(mp.phase);
display.print("Age: ");
display.print(mp.age);
display.println(" days");
display.print("Visibility: ");
display.print(mp.fraction);
display.println("%");
display.print("Distance: ");
display.print(mp.distance);
display.println(" er");
display.print("Latitude: ");
display.print(mp.latitude);
display.println("°");
display.print("Longitude: ");
display.print(mp.longitude);
display.println("°");
display.print("Ph.: ");
display.println(mp.phaseName);
display.print("Zodiac: ");
display.println(mp.zodiacName);
display.display(true); // full refresh
guiState = APP_STATE;
}
void Watchy::showBuzz() {
display.setFullWindow();
display.fillScreen(GxEPD_BLACK);
@ -443,11 +503,12 @@ void Watchy::setTime() {
int8_t hour = currentTime.Hour;
int8_t day = currentTime.Day;
int8_t month = currentTime.Month;
int8_t year = currentTime.Year; //tmYearToY2k(currentTime.Year);
int8_t year = tmYearToY2k(currentTime.Year);
#endif
int8_t gmt = gmtOffset / 3600;
// gmt variable defaults to TIMEZONES_SELECTED if defined
int8_t gmt = OFFSETS_SEC[tzIndex] / 3600;
int8_t tzIndex = TIMEZONES_SELECTED;
int8_t setIndex = SET_HOUR;
@ -529,13 +590,8 @@ void Watchy::setTime() {
}
if(tzIndex < 13){
gmt = (tzIndex);
}else if(tzIndex == 13){
gmt = 0;
}else{
gmt = - (tzIndex - 13);
}
gmt = OFFSETS_SEC[tzIndex] / 3600;
gmtOffset = gmt * 3600;
display.fillScreen(GxEPD_BLACK);
display.setTextColor(GxEPD_WHITE);
@ -580,7 +636,7 @@ void Watchy::setTime() {
if (setIndex == SET_YEAR) { // blink minute digits
display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK);
}
display.print(year);
display.print(1970 + year);
display.setTextColor(GxEPD_WHITE);
display.print("/");
@ -613,20 +669,20 @@ void Watchy::setTime() {
#ifdef ARDUINO_ESP32S3_DEV
tm.Year = year;
#else
tm.Year = year; //y2kYearToTm(year);
tm.Year = y2kYearToTm(year);
#endif
tm.Hour = hour;
tm.Minute = minute;
tm.Second = 0;
gmtOffset = gmt * 3600;
if(TIMEZONES_NON_GMT_OVERRIDE == 0){
setenv("TZ", timeZones[tzIndex].timezone, 1);
} else if (TIMEZONES_NON_GMT_OVERRIDE == 1) {
} else{
#if TIMEZONES_NON_GMT_OVERRIDE == 1
setenv("TZ", tz_override.timezone, 1);
} else {
setenv("TZ", timeZones[TIMEZONES_SELECTED].timezone, 1);
#else
setenv("TZ", timeZones[TIMEZONES_SELECTED].timezone, 1);
#endif
}
tzset();
@ -775,7 +831,7 @@ weatherData Watchy::_getWeatherData(String cityID, String lat, String lon, Strin
breakTime((time_t)(int)responseObject["sys"]["sunset"], currentWeather.sunset);
// sync NTP during weather API call and use timezone of lat & lon
gmtOffset = int(responseObject["timezone"]);
syncNTP();
syncNTP(gmtOffset);
} else {
// http error
}
@ -1144,7 +1200,7 @@ void Watchy::showSyncNTP() {
display.println(gmtOffset);
display.display(true); // full refresh
if (connectWiFi()) {
if (syncNTP()) {
if (syncNTP(gmtOffset)) {
display.println("NTP Sync Success\n");
display.println("Current Time Is:");
@ -1200,5 +1256,9 @@ bool Watchy::syncNTP(long gmt, String ntpServer) {
tmElements_t tm;
breakTime((time_t)timeClient.getEpochTime(), tm);
RTC.set(tm);
//Update also moon calendar.
RTC.read(currentTime);
time_t epoch = makeTime(currentTime);
mp.calculate(epoch);
return true;
}

View File

@ -17,6 +17,7 @@
#include "config.h"
#include "esp_chip_info.h"
#include "TimezonesGMT.h"
#include "MoonPhase.h"
#ifdef ARDUINO_ESP32S3_DEV
#include "Watchy32KRTC.h"
#include "soc/rtc.h"
@ -58,7 +59,7 @@ typedef struct watchySettings {
int8_t weatherUpdateInterval;
// NTP Settings
String ntpServer;
int gmtOffset;
long gmtOffset;
//
bool vibrateOClock;
} watchySettings;
@ -86,6 +87,7 @@ public:
void showMenu(byte menuIndex, bool partialRefresh);
void showFastMenu(byte menuIndex);
void showAbout();
void showMoonPhase();
void showBuzz();
void showAccelerometer();
void showUpdateFW();

View File

@ -64,7 +64,6 @@ void Watchy32KRTC::set(tmElements_t tm) {
timeInfo.tm_hour = tm.Hour;
timeInfo.tm_min = tm.Minute;
timeInfo.tm_sec = tm.Second;
// Convert tm to timeval
struct timeval tv;
tv.tv_sec = mktime(&timeInfo);

View File

@ -99,8 +99,8 @@
#define MAIN_MENU_STATE 0
#define APP_STATE 1
#define FW_UPDATE_STATE 2
#define MENU_HEIGHT 25
#define MENU_LENGTH 7
#define MENU_HEIGHT 24
#define MENU_LENGTH 8
// set time
#define SET_HOUR 0
#define SET_MINUTE 1