diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 22db341..b284b44 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1,11 +1,15 @@ -#include "src/TEF6686.h" -#include "src/constants.h" -#include "src/language.h" #include #include #include // https://github.com/Bodmer/TFT_eSPI #include // https://github.com/PaulStoffregen/Time +#include "src/font.h" +#include "src/TEF6686.h" +#include "src/constants.h" +#include "src/language.h" +#define GFXFF 1 +#define EXO14 &Exo2_Regular14pt8b +#define EXO8 &Exo2_Regular8pt8b #define TFT_GREYOUT 0x38E7 #define ROTARY_PIN_A 34 #define ROTARY_PIN_B 36 @@ -276,10 +280,12 @@ void setup() { if (rotarymode == 0) rotarymode = 1; else rotarymode = 0; EEPROM.writeByte(52, rotarymode); EEPROM.commit(); + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][1], 155, 70, 4); - tft.drawCentreString(myLanguage[language][2], 150, 100, 4); + tft.drawString(myLanguage[language][1], 155, 77, GFXFF); + tft.drawString(myLanguage[language][2], 150, 107, GFXFF); while (digitalRead(BWBUTTON) == LOW) delay(50); } @@ -293,36 +299,42 @@ void setup() { } EEPROM.writeByte(53, displayflip); EEPROM.commit(); + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][3], 155, 70, 4); - tft.drawCentreString(myLanguage[language][2], 150, 100, 4); + tft.drawString(myLanguage[language][3], 155, 77, GFXFF); + tft.drawString(myLanguage[language][2], 150, 107, GFXFF); while (digitalRead(MODEBUTTON) == LOW) delay(50); } if (digitalRead(PWRBUTTON) == LOW) { analogWrite(SMETERPIN, 511); + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][4], 155, 70, 4); - tft.drawCentreString(myLanguage[language][5], 150, 100, 4); + tft.drawString(myLanguage[language][4], 155, 77, GFXFF); + tft.drawString(myLanguage[language][5], 150, 107, GFXFF); while (digitalRead(PWRBUTTON) == LOW) delay(50); analogWrite(SMETERPIN, 0); } if (digitalRead(ROTARY_BUTTON) == LOW) { + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); if (optenc == 0) { optenc = 1; - tft.drawCentreString(myLanguage[language][6], 155, 70, 4); + tft.drawString(myLanguage[language][6], 155, 77, GFXFF); } else { optenc = 0; - tft.drawCentreString(myLanguage[language][7], 155, 70, 4); + tft.drawString(myLanguage[language][7], 155, 77, GFXFF); } EEPROM.writeByte(42, optenc); EEPROM.commit(); - tft.drawCentreString(myLanguage[language][2], 150, 100, 4); + tft.drawString(myLanguage[language][2], 150, 107, GFXFF); while (digitalRead(ROTARY_BUTTON) == LOW) delay(50); } @@ -330,32 +342,36 @@ void setup() { tft.fillScreen(TFT_BLACK); tft.pushImage (0, 99, 211, 140, pe5pvblogo); tft.pushImage (239, 200, 80, 30, nxplogo); + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); tft.setTextColor(TFT_SKYBLUE); - tft.drawCentreString(myLanguage[language][8], 160, 10, 4); + tft.drawString(myLanguage[language][8], 160, 17, GFXFF); + tft.setFreeFont(EXO8); tft.setTextColor(TFT_YELLOW); - tft.drawCentreString("Software " + String(VERSION), 160, 30, 2); + tft.drawString("Software " + String(VERSION), 160, 39, GFXFF); + tft.setTextDatum(ML_DATUM); tft.setTextColor(TFT_WHITE); - tft.drawString("Lithio", 260, 180, 2); + tft.drawString("Lithio", 260, 191, GFXFF); if (lowByte(device) == 14) { fullsearchrds = false; - tft.drawString("Tuner: TEF6686 Lithio (" + String(version) + ")", 80, 60, 2); + tft.drawString("Tuner: TEF6686 Lithio (" + String(version) + ")", 80, 64, GFXFF); } else if (lowByte(device) == 1) { fullsearchrds = true; - tft.drawString("Tuner: TEF6687 Lithio FMSI (" + String(version) + ")", 80, 60, 2); + tft.drawString("Tuner: TEF6687 Lithio FMSI (" + String(version) + ")", 80, 64, GFXFF); } else if (lowByte(device) == 9) { fullsearchrds = false; - tft.drawString("Tuner: TEF6688 Lithio DR (" + String(version) + ")", 80, 60, 2); + tft.drawString("Tuner: TEF6688 Lithio DR (" + String(version) + ")", 80, 64, GFXFF); } else if (lowByte(device) == 3) { fullsearchrds = true; - tft.drawString("Tuner: TEF6689 Lithio FMSI DR (" + String(version) + ")", 80, 60, 2); + tft.drawString("Tuner: TEF6689 Lithio FMSI DR (" + String(version) + ")", 80, 64, GFXFF); } else { tft.setTextColor(TFT_RED); - tft.drawString(myLanguage[language][9], 80, 60, 2); + tft.drawString(myLanguage[language][9], 80, 64, GFXFF); while (true); for (;;); } - tft.drawString("Patch: v" + String(TEF), 80, 75, 2); + tft.drawString("Patch: v" + String(TEF), 80, 79, GFXFF); delay(1500); radio.setVolume(VolSet); @@ -392,14 +408,15 @@ void loop() { if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == 0) { if (screenmute == false) { + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_WHITE); - tft.drawString("20", 20, 153, 1); - tft.drawString("40", 50, 153, 1); - tft.drawString("60", 80, 153, 1); - tft.drawString("80", 110, 153, 1); - tft.drawString("100", 134, 153, 1); - tft.drawString("120", 164, 153, 1); - tft.drawString("%", 196, 153, 1); + tft.drawString("20", 20, 150, 2); + tft.drawString("40", 50, 150, 2); + tft.drawString("60", 80, 150, 2); + tft.drawString("80", 110, 150, 2); + tft.drawString("100", 134, 150, 2); + tft.drawString("120", 164, 150, 2); + tft.drawString("%", 196, 150, 2); tft.drawString("M", 6, 136, 2); tft.drawString("PI:", 216, 195, 2); tft.drawString("PS:", 6, 195, 2); @@ -425,14 +442,15 @@ void loop() { tft.fillRect(160, 139, 12, 8, TFT_GREYOUT); tft.fillRect(174, 139, 12, 8, TFT_GREYOUT); tft.fillRect(188, 139, 12, 8, TFT_GREYOUT); + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_GREYOUT); - tft.drawString("20", 20, 153, 1); - tft.drawString("40", 50, 153, 1); - tft.drawString("60", 80, 153, 1); - tft.drawString("80", 110, 153, 1); - tft.drawString("100", 134, 153, 1); - tft.drawString("120", 164, 153, 1); - tft.drawString("%", 196, 153, 1); + tft.drawString("20", 20, 150, 2); + tft.drawString("40", 50, 150, 2); + tft.drawString("60", 80, 150, 2); + tft.drawString("80", 110, 150, 2); + tft.drawString("100", 134, 150, 2); + tft.drawString("120", 164, 150, 2); + tft.drawString("%", 196, 150, 2); tft.drawString("M", 6, 136, 2); tft.drawString("PI:", 216, 195, 2); tft.drawString("PS:", 6, 195, 2); @@ -468,6 +486,7 @@ void loop() { if (menu == true && menuopen == true && menuoption == 110) { if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus); if (millis() >= lowsignaltimer + 500 || change2 == true) { + tft.setTextDatum(TL_DATUM); lowsignaltimer = millis(); change2 = false; if (SStatus > SStatusold || SStatus < SStatusold) { @@ -475,13 +494,13 @@ void loop() { if (screenmute == false) { tft.setTextColor(TFT_BLACK); if (SStatusold >= 0) { - if (SStatusoldcount <= 1) tft.setCursor (100, 140); - if (SStatusoldcount == 2) tft.setCursor (73, 140); - if (SStatusoldcount >= 3) tft.setCursor (46, 140); + if (SStatusoldcount <= 1) tft.setCursor (90, 150); + if (SStatusoldcount == 2) tft.setCursor (63, 150); + if (SStatusoldcount >= 3) tft.setCursor (36, 150); } else { - if (SStatusoldcount <= 1) tft.setCursor (100, 140); - if (SStatusoldcount == 2) tft.setCursor (83, 140); - if (SStatusoldcount >= 3) tft.setCursor (56, 140); + if (SStatusoldcount <= 1) tft.setCursor (90, 150); + if (SStatusoldcount == 2) tft.setCursor (73, 150); + if (SStatusoldcount >= 3) tft.setCursor (46, 150); } tft.setTextFont(6); tft.print(SStatusold / 10); @@ -495,13 +514,13 @@ void loop() { tft.setTextColor(TFT_YELLOW, TFT_BLACK); if (SStatus >= 0) { - if (count.length() == 1) tft.setCursor (100, 140); - if (count.length() == 2) tft.setCursor (73, 140); - if (count.length() == 3) tft.setCursor (46, 140); + if (count.length() == 1) tft.setCursor (90, 150); + if (count.length() == 2) tft.setCursor (63, 150); + if (count.length() == 3) tft.setCursor (36, 150); } else { - if (count.length() == 1) tft.setCursor (100, 140); - if (count.length() == 2) tft.setCursor (83, 140); - if (count.length() >= 3) tft.setCursor (56, 140); + if (count.length() == 1) tft.setCursor (90, 150); + if (count.length() == 2) tft.setCursor (73, 150); + if (count.length() >= 3) tft.setCursor (46, 150); } tft.setTextFont(6); tft.print(SStatus / 10); @@ -611,6 +630,7 @@ void SelectBand() { doBW; radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus); if (screenmute == false) BuildDisplay(); + tft.setTextDatum(TL_DATUM); tft.drawString("PI:", 216, 195, 2); tft.drawString("PS:", 6, 195, 2); tft.drawString("PTY:", 6, 168, 2); @@ -689,6 +709,7 @@ void ModeButtonPress() { } else { if (USBstatus == true) { ShowFreq(1); + tft.setTextDatum(TL_DATUM); tft.setTextFont(4); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.setCursor (70, 60); @@ -856,92 +877,93 @@ void ButtonPress() { menuopen = true; tft.drawRoundRect(20, 30, 274, 170, 5, TFT_WHITE); tft.fillRoundRect(22, 32, 270, 166, 5, TFT_BLACK); + tft.setFreeFont(EXO14); + tft.setTextDatum(TL_DATUM); switch (menupage) { case 1: switch (menuoption) { case 30: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][10], 155, 70, 4); - tft.drawString("dB", 170, 110, 4); - + tft.drawCentreString(myLanguage[language][10], 155, 70, GFXFF); + tft.drawString("dB", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 155, 110, GFXFF); else tft.drawRightString(String(VolSet, DEC), 155, 110, GFXFF); break; case 50: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][11], 155, 70, 4); - tft.drawString("MHz", 170, 110, 4); + tft.drawCentreString(myLanguage[language][11], 155, 70, GFXFF); + tft.drawString("MHz", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(ConverterSet, DEC), 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][12], 155, 70, 4); - tft.drawString("MHz", 170, 110, 4); + tft.drawCentreString(myLanguage[language][12], 155, 70, GFXFF); + tft.drawString("MHz", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 90: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][13], 155, 70, 4); - tft.drawString("MHz", 170, 110, 4); + tft.drawCentreString(myLanguage[language][13], 155, 70, GFXFF); + tft.drawString("MHz", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 110: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][14], 155, 70, 4); - tft.drawString("dB", 170, 110, 4); - tft.drawString("dBuV", 190, 157, 4); + tft.drawCentreString(myLanguage[language][14], 155, 70, GFXFF); + tft.drawString("dB", 170, 110, GFXFF); + tft.drawString("dBuV", 190, 157, GFXFF); tft.setTextColor(TFT_YELLOW); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 155, 110, GFXFF); SStatusold = 2000; change2 = true; break; case 130: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][15], 155, 70, 4); - if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4); + tft.drawCentreString(myLanguage[language][15], 155, 70, GFXFF); + if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); break; case 150: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][16], 155, 70, 4); - if (HighCutLevel != 0) tft.drawString("Hz", 170, 110, 4); + tft.drawCentreString(myLanguage[language][16], 155, 70, GFXFF); + if (HighCutLevel != 0) tft.drawString("Hz", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); break; case 170: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][17], 155, 70, 4); - if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4); + tft.drawCentreString(myLanguage[language][17], 155, 70, GFXFF); + if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); break; case 190: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][18], 155, 70, 4); - tft.drawString("dBuV", 155, 110, 4); + tft.drawCentreString(myLanguage[language][18], 155, 70, GFXFF); + tft.drawString("dBuV", 155, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4); + tft.drawRightString(String(LowLevelSet, DEC), 145, 110, GFXFF); break; case 210: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][19], 155, 70, 4); - tft.drawString("%", 170, 110, 4); + tft.drawCentreString(myLanguage[language][19], 155, 70, GFXFF); + tft.drawString("%", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); + tft.drawRightString(String(ContrastSet, DEC), 155, 110, GFXFF); break; } break; @@ -949,37 +971,37 @@ void ButtonPress() { switch (menuoption) { case 30: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][40], 155, 70, 4); + tft.drawCentreString(myLanguage[language][40], 155, 70, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawCentreString(myLanguage[language][0], 155, 110, 4); + tft.drawCentreString(myLanguage[language][0], 155, 110, GFXFF); break; case 50: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][38], 155, 70, 4); + tft.drawCentreString(myLanguage[language][38], 155, 70, GFXFF); tft.setTextColor(TFT_YELLOW); - if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][43], 155, 70, 4); + tft.drawCentreString(myLanguage[language][43], 155, 70, GFXFF); tft.setTextColor(TFT_YELLOW); - if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; case 90: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][44], 155, 70, 4); + tft.drawCentreString(myLanguage[language][44], 155, 70, GFXFF); tft.setTextColor(TFT_YELLOW); - if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; case 110: tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][45], 155, 70, 4); + tft.drawCentreString(myLanguage[language][45], 155, 70, GFXFF); tft.setTextColor(TFT_YELLOW); - if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; } } @@ -1021,7 +1043,7 @@ void KeyUp() { store = true; } else { if (menuopen == false) { - tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); + tft.drawRoundRect(8, menuoption + 1, 302, 18, 5, TFT_BLACK); menuoption += 20; if (menuoption > 210) { menupage++; @@ -1029,24 +1051,24 @@ void KeyUp() { menuoption = 30; BuildMenu(); } - tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); + tft.drawRoundRect(8, menuoption + 1, 302, 18, 5, TFT_WHITE); } else { switch (menupage) { case 1: switch (menuoption) { case 30: tft.setTextColor(TFT_BLACK); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 155, 110, GFXFF); else tft.drawRightString(String(VolSet, DEC), 155, 110, GFXFF); VolSet++; if (VolSet > 10) VolSet = 10; tft.setTextColor(TFT_YELLOW); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 155, 110, GFXFF); else tft.drawRightString(String(VolSet, DEC), 155, 110, GFXFF); radio.setVolume(VolSet); break; case 50: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(ConverterSet, DEC), 155, 110, GFXFF); ConverterSet++; if (ConverterSet > 2400 || ConverterSet <= 200) if (ConverterSet == 1) ConverterSet = 200; else ConverterSet = 0; if (ConverterSet >= 200) { @@ -1056,93 +1078,95 @@ void KeyUp() { Wire.endTransmission(); } tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(ConverterSet, DEC), 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); LowEdgeSet ++; if (LowEdgeSet > 107) LowEdgeSet = 65; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 90: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); HighEdgeSet ++; if (HighEdgeSet > 108) HighEdgeSet = 66; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 110: + tft.setFreeFont(EXO14); + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_BLACK); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 155, 110, GFXFF); LevelOffset++; if (LevelOffset > 15) LevelOffset = -25; tft.setTextColor(TFT_YELLOW); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 155, 110, GFXFF); + radio.setOffset(LevelOffset); change2 = true; break; case 130: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); + tft.drawRightString(String(StereoLevel, DEC), 155, 110, GFXFF); StereoLevel ++; if (StereoLevel > 60 || StereoLevel <= 30) if (StereoLevel == 1) StereoLevel = 30; else StereoLevel = 0; - tft.setTextColor(TFT_BLACK); - tft.drawRightString("Off", 165, 110, 4); - tft.drawString("dBuV", 170, 110, 4); + tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); + tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_WHITE); - if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4); + if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); radio.setStereoLevel(StereoLevel); break; case 150: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutLevel * 100, DEC), 155, 110, GFXFF); HighCutLevel ++; if (HighCutLevel > 70) HighCutLevel = 15; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutLevel * 100, DEC), 155, 110, GFXFF); radio.setHighCutLevel(HighCutLevel); break; case 170: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutOffset, DEC), 155, 110, GFXFF); HighCutOffset ++; if (HighCutOffset > 60 || HighCutOffset <= 20) if (HighCutOffset == 1) HighCutOffset = 20; else HighCutOffset = 0; tft.setTextColor(TFT_BLACK); - tft.drawRightString("Off", 165, 110, 4); - tft.drawString("dBuV", 170, 110, 4); + tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); + tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_WHITE); - if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4); + if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); radio.setHighCutOffset(HighCutOffset); break; case 190: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4); + tft.drawRightString(String(LowLevelSet, DEC), 145, 110, GFXFF); LowLevelSet++; if (LowLevelSet > 40) LowLevelSet = -10; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4); + tft.drawRightString(String(LowLevelSet, DEC), 145, 110, GFXFF); break; case 210: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); + tft.drawRightString(String(ContrastSet, DEC), 155, 110, GFXFF); ContrastSet ++; if (ContrastSet > 100) ContrastSet = 1; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); + tft.drawRightString(String(ContrastSet, DEC), 155, 110, GFXFF); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); break; } @@ -1151,45 +1175,45 @@ void KeyUp() { switch (menuoption) { case 30: tft.setTextColor(TFT_BLACK); - tft.drawCentreString(myLanguage[language][0], 155, 110, 4); + tft.drawCentreString(myLanguage[language][0], 155, 110, GFXFF); language ++; if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0; tft.setTextColor(TFT_YELLOW); - tft.drawCentreString(myLanguage[language][0], 155, 110, 4); + tft.drawCentreString(myLanguage[language][0], 155, 110, GFXFF); break; case 50: tft.setTextColor(TFT_BLACK); - if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (showrdserrors) showrdserrors = false; else showrdserrors = true; tft.setTextColor(TFT_YELLOW); - if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_BLACK); - if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (softmutefm) softmutefm = false; else softmutefm = true; tft.setTextColor(TFT_YELLOW); - if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); radio.setSoftmuteFM(softmutefm); break; case 90: tft.setTextColor(TFT_BLACK); - if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (softmuteam) softmuteam = false; else softmuteam = true; tft.setTextColor(TFT_YELLOW); - if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); radio.setSoftmuteAM(softmuteam); break; case 110: tft.setTextColor(TFT_BLACK); - if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (edgebeep) edgebeep = false; else edgebeep = true; tft.setTextColor(TFT_YELLOW); - if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; } } @@ -1227,7 +1251,7 @@ void KeyDown() { store = true; } else { if (menuopen == false) { - tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); + tft.drawRoundRect(8, menuoption + 1, 302, 18, 5, TFT_BLACK); menuoption -= 20; if (menuoption < 30) { menupage--; @@ -1235,23 +1259,24 @@ void KeyDown() { menuoption = 210; BuildMenu(); } - tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); + tft.drawRoundRect(8, menuoption + 1, 302, 18, 5, TFT_WHITE); } else { switch (menupage) { case 1: switch (menuoption) { case 30: tft.setTextColor(TFT_BLACK); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 155, 110, GFXFF); else tft.drawRightString(String(VolSet, DEC), 155, 110, GFXFF); VolSet--; if (VolSet < -10) VolSet = -10; tft.setTextColor(TFT_YELLOW); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); radio.setVolume(VolSet); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 155, 110, GFXFF); else tft.drawRightString(String(VolSet, DEC), 155, 110, GFXFF); + radio.setVolume(VolSet); break; case 50: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(ConverterSet, DEC), 155, 110, GFXFF); ConverterSet--; if (ConverterSet < 200) if (ConverterSet < 0) ConverterSet = 2400; else ConverterSet = 0; if (ConverterSet >= 200) { @@ -1261,96 +1286,96 @@ void KeyDown() { Wire.endTransmission(); } tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(ConverterSet, DEC), 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); LowEdgeSet --; if (LowEdgeSet < 65) LowEdgeSet = 107; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 90: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); HighEdgeSet --; if (HighEdgeSet < 66) HighEdgeSet = 108; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 155, 110, GFXFF); break; case 110: + tft.setFreeFont(EXO14); + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_BLACK); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 155, 110, GFXFF); LevelOffset--; if (LevelOffset < -25) LevelOffset = 15; tft.setTextColor(TFT_YELLOW); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 155, 110, GFXFF); + radio.setOffset(LevelOffset); change2 = true; break; case 130: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); + tft.drawRightString(String(StereoLevel, DEC), 155, 110, GFXFF); StereoLevel --; if (StereoLevel < 30) if (StereoLevel < 0) StereoLevel = 60; else StereoLevel = 0; - tft.setTextColor(TFT_BLACK); - tft.drawRightString("Off", 165, 110, 4); - tft.drawString("dBuV", 170, 110, 4); + tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); + tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_WHITE); - if (StereoLevel != 0) { - tft.drawString("dBuV", 170, 110, 4); - } + if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); radio.setStereoLevel(StereoLevel); break; case 150: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutLevel * 100, DEC), 155, 110, GFXFF); HighCutLevel --; if (HighCutLevel < 15) HighCutLevel = 70; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutLevel * 100, DEC), 155, 110, GFXFF); radio.setHighCutLevel(HighCutLevel); break; case 170: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); + tft.drawRightString(String(HighCutOffset, DEC), 155, 110, GFXFF); HighCutOffset --; if (HighCutOffset < 20) if (HighCutOffset < 0) HighCutOffset = 60; else HighCutOffset = 0; tft.setTextColor(TFT_BLACK); - tft.drawRightString("Off", 165, 110, 4); - tft.drawString("dBuV", 170, 110, 4); + tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); + tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_WHITE); - if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4); + if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4); + if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF); radio.setHighCutOffset(HighCutOffset); break; case 190: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4); + tft.drawRightString(String(LowLevelSet, DEC), 145, 110, GFXFF); LowLevelSet--; if (LowLevelSet < -10) LowLevelSet = 40; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4); + tft.drawRightString(String(LowLevelSet, DEC), 145, 110, GFXFF); break; case 210: tft.setTextColor(TFT_BLACK); - tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); + tft.drawRightString(String(ContrastSet, DEC), 155, 110, GFXFF); ContrastSet --; if (ContrastSet < 1) ContrastSet = 100; tft.setTextColor(TFT_YELLOW); - tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4); + tft.drawRightString(String(ContrastSet, DEC), 155, 110, GFXFF); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); break; } @@ -1360,45 +1385,45 @@ void KeyDown() { switch (menuoption) { case 30: tft.setTextColor(TFT_BLACK); - tft.drawCentreString(myLanguage[language][0], 155, 110, 4); + tft.drawCentreString(myLanguage[language][0], 155, 110, GFXFF); language --; if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1; tft.setTextColor(TFT_YELLOW); - tft.drawCentreString(myLanguage[language][0], 155, 110, 4); + tft.drawCentreString(myLanguage[language][0], 155, 110, GFXFF); break; case 50: tft.setTextColor(TFT_BLACK); - if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (showrdserrors) showrdserrors = false; else showrdserrors = true; tft.setTextColor(TFT_YELLOW); - if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; case 70: tft.setTextColor(TFT_BLACK); - if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (softmutefm) softmutefm = false; else softmutefm = true; tft.setTextColor(TFT_YELLOW); - if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmutefm) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); radio.setSoftmuteFM(softmutefm); break; case 90: tft.setTextColor(TFT_BLACK); - if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (softmuteam) softmuteam = false; else softmuteam = true; tft.setTextColor(TFT_YELLOW); - if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); radio.setSoftmuteAM(softmuteam); break; case 110: tft.setTextColor(TFT_BLACK); - if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (edgebeep) edgebeep = false; else edgebeep = true; tft.setTextColor(TFT_YELLOW); - if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); break; } } @@ -1407,6 +1432,7 @@ void KeyDown() { } void ShowMemoryPos() { + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_BLACK); tft.drawString(String(memoryposold + 1), 80, 30, 2); tft.setTextColor(TFT_SKYBLUE); @@ -1436,21 +1462,25 @@ void readRds() { if (band == 0) { RDSstatus = radio.readRDS(showrdserrors); ShowRDSLogo(RDSstatus); - + tft.setTextDatum(ML_DATUM); if (RDSstatus == 0) { tft.setTextColor(TFT_SKYBLUE); - tft.drawString(PIold, 244, 192, 4); - tft.drawString(PSold, 38, 192, 4); - tft.drawString(PTYold, 38, 168, 2); + tft.setFreeFont(EXO14); + tft.drawString(PIold, 244, 199, GFXFF); + tft.drawString(PSold, 38, 199, GFXFF); + tft.setFreeFont(EXO8); + tft.drawString(PTYold, 38, 173, GFXFF); tft.setTextColor(TFT_BLACK); - tft.drawString(RTold, 6, 222, 2); + tft.drawString(RTold, 6, 224, GFXFF); dropout = true; } else { if (dropout == true && PIold.length() != 0) { tft.setTextColor(TFT_YELLOW); - tft.drawString(PIold, 244, 192, 4); - tft.drawString(PSold, 38, 192, 4); - tft.drawString(PTYold, 38, 168, 2); + tft.setFreeFont(EXO14); + tft.drawString(PIold, 244, 199, GFXFF); + tft.drawString(PSold, 38, 199, GFXFF); + tft.setFreeFont(EXO8); + tft.drawString(PTYold, 38, 173, GFXFF); dropout = false; } } @@ -1482,10 +1512,12 @@ void readRds() { void showPI() { if (strcmp(radio.rds.picode, radioIdPrevious)) { + tft.setFreeFont(EXO14); + tft.setTextDatum(ML_DATUM); tft.setTextColor(TFT_BLACK); - tft.drawString(PIold, 244, 192, 4); + tft.drawString(PIold, 244, 199, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawString(radio.rds.picode, 244, 192, 4); + tft.drawString(radio.rds.picode, 244, 199, GFXFF); PIold = radio.rds.picode; strcpy(radioIdPrevious, radio.rds.picode); } @@ -1493,10 +1525,12 @@ void showPI() { void showPTY() { if (strcmp(radio.rds.stationType, programTypePrevious)) { + tft.setFreeFont(EXO8); + tft.setTextDatum(ML_DATUM); tft.setTextColor(TFT_BLACK); - tft.drawString(PTYold, 38, 168, 2); + tft.drawString(PTYold, 38, 173, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawString(radio.rds.stationType, 38, 168, 2); + tft.drawString(radio.rds.stationType, 38, 173, GFXFF); PTYold = radio.rds.stationType; strcpy(programTypePrevious, radio.rds.stationType); } @@ -1504,10 +1538,12 @@ void showPTY() { void showPS() { if (strcmp(radio.rds.stationName, programServicePrevious)) { + tft.setFreeFont(EXO14); + tft.setTextDatum(ML_DATUM); tft.setTextColor(TFT_BLACK); - tft.drawString(PSold, 38, 192, 4); + tft.drawString(PSold, 38, 199, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawString(radio.rds.stationName, 38, 192, 4); + tft.drawString(radio.rds.stationName, 38, 199, GFXFF); PSold = radio.rds.stationName; strcpy(programServicePrevious, radio.rds.stationName); } @@ -1518,10 +1554,12 @@ void showRadioText() { if (millis() - rtticker >= 350) { xPos -= charWidth; if (xPos < -tft.textWidth(radio.rds.stationText) + (charWidth * 42)) xPos = 6; + sprite.setFreeFont(EXO8); + sprite.setTextDatum(ML_DATUM); sprite.fillSprite(TFT_BLACK); sprite.setTextColor(TFT_YELLOW); - sprite.drawString(radio.rds.stationText, xPos, yPos, 2); - sprite.pushSprite(6, 220); + sprite.drawString(radio.rds.stationText, xPos, yPos, GFXFF); + sprite.pushSprite(6, 224); rtticker = millis(); RTold = radio.rds.stationText; strcpy(radioTextPrevious, radio.rds.stationText); @@ -1529,7 +1567,7 @@ void showRadioText() { } } else if (cleanup == true) { sprite.fillSprite(TFT_BLACK); - sprite.pushSprite(6, 220); + sprite.pushSprite(6, 224); cleanup = false; } } @@ -1546,10 +1584,12 @@ void showCT() { rds_clock = ""; } if (rds_clock != rds_clockold) { + tft.setFreeFont(EXO8); + tft.setTextDatum(MR_DATUM); tft.setTextColor(TFT_BLACK); - tft.drawRightString(rds_clockold, 205, 168, 2); + tft.drawString(rds_clockold, 205, 173, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(rds_clock, 205, 168, 2); + tft.drawString(rds_clock, 205, 173, GFXFF); rds_clockold = rds_clock; } } @@ -1558,59 +1598,61 @@ void BuildMenu() { tft.fillScreen(TFT_BLACK); tft.drawRect(0, 0, 320, 240, TFT_BLUE); tft.drawLine(0, 23, 320, 23, TFT_BLUE); + tft.setFreeFont(EXO8); + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_SKYBLUE); - tft.drawString(myLanguage[language][41], 10, 4, 2); + tft.drawString(myLanguage[language][41], 10, 4, GFXFF); tft.setTextColor(TFT_WHITE); - tft.drawRightString(String(menupage) + "/" + String(menupagestotal), 305, 4, 2); - tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); + tft.drawRightString(String(menupage) + "/" + String(menupagestotal), 305, 4, GFXFF); + tft.drawRoundRect(8, menuoption + 1, 302, 18, 5, TFT_WHITE); tft.setTextColor(TFT_WHITE); switch (menupage) { case 1: - tft.drawRightString("dB", 305, 30, 2); - tft.drawRightString("MHz", 305, 50, 2); - tft.drawRightString("MHz", 305, 70, 2); - tft.drawRightString("MHz", 305, 90, 2); - tft.drawRightString("dB", 305, 110, 2); - if (StereoLevel != 0) tft.drawRightString("dBuV", 305, 130, 2); - if (HighCutLevel != 0) tft.drawRightString("Hz", 305, 150, 2); - if (HighCutOffset != 0) tft.drawRightString("dBuV", 305, 170, 2); - tft.drawRightString("dBuV", 305, 190, 2); - tft.drawRightString("%", 305, 210, 2); - tft.drawString(myLanguage[language][20], 20, 30, 2); - tft.drawString(myLanguage[language][21], 20, 50, 2); - tft.drawString(myLanguage[language][22], 20, 70, 2); - tft.drawString(myLanguage[language][23], 20, 90, 2); - tft.drawString(myLanguage[language][24], 20, 110, 2); - tft.drawString(myLanguage[language][25], 20, 130, 2); - tft.drawString(myLanguage[language][26], 20, 150, 2); - tft.drawString(myLanguage[language][27], 20, 170, 2); - tft.drawString(myLanguage[language][28], 20, 190, 2); - tft.drawString(myLanguage[language][29], 20, 210, 2); + tft.drawRightString("dB", 305, 30, GFXFF); + tft.drawRightString("MHz", 305, 52, GFXFF); + tft.drawRightString("MHz", 305, 70, GFXFF); + tft.drawRightString("MHz", 305, 90, GFXFF); + tft.drawRightString("dB", 305, 110, GFXFF); + if (StereoLevel != 0) tft.drawRightString("dBuV", 305, 130, GFXFF); + if (HighCutLevel != 0) tft.drawRightString("Hz", 305, 150, GFXFF); + if (HighCutOffset != 0) tft.drawRightString("dBuV", 305, 170, GFXFF); + tft.drawRightString("dBuV", 305, 190, GFXFF); + tft.drawRightString("%", 305, 210, GFXFF); + tft.drawString(myLanguage[language][20], 20, 30, GFXFF); + tft.drawString(myLanguage[language][21], 20, 50, GFXFF); + tft.drawString(myLanguage[language][22], 20, 70, GFXFF); + tft.drawString(myLanguage[language][23], 20, 90, GFXFF); + tft.drawString(myLanguage[language][24], 20, 110, GFXFF); + tft.drawString(myLanguage[language][25], 20, 130, GFXFF); + tft.drawString(myLanguage[language][26], 20, 150, GFXFF); + tft.drawString(myLanguage[language][27], 20, 170, GFXFF); + tft.drawString(myLanguage[language][28], 20, 190, GFXFF); + tft.drawString(myLanguage[language][29], 20, 210, GFXFF); tft.setTextColor(TFT_YELLOW); - if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 270, 30, 2); else tft.drawRightString(String(VolSet, DEC), 270, 30, 2); - tft.drawRightString(String(ConverterSet, DEC), 270, 50, 2); - tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 270, 70, 2); - tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 270, 90, 2); - if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 270, 110, 2); else tft.drawRightString(String(LevelOffset, DEC), 270, 110, 2); - if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 270, 130, 2); else tft.drawRightString(myLanguage[language][30], 270, 130, 2); - if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 270, 150, 2); else tft.drawRightString(myLanguage[language][30], 270, 150, 2); - if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 270, 170, 2); else tft.drawRightString(myLanguage[language][30], 270, 170, 2); - tft.drawRightString(String(LowLevelSet, DEC), 270, 190, 2); - tft.drawRightString(String(ContrastSet, DEC), 270, 210, 2); + if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 265, 30, GFXFF); else tft.drawRightString(String(VolSet, DEC), 265, 30, GFXFF); + tft.drawRightString(String(ConverterSet, DEC), 265, 50, GFXFF); + tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 265, 70, GFXFF); + tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 265, 90, GFXFF); + if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 265, 110, GFXFF); else tft.drawRightString(String(LevelOffset, DEC), 265, 110, GFXFF); + if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 265, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 130, GFXFF); + if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF); + if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF); + tft.drawRightString(String(LowLevelSet, DEC), 265, 190, GFXFF); + tft.drawRightString(String(ContrastSet, DEC), 265, 210, GFXFF); break; case 2: - tft.drawString(myLanguage[language][39], 20, 30, 2); - tft.drawString(myLanguage[language][38], 20, 50, 2); - tft.drawString(myLanguage[language][43], 20, 70, 2); - tft.drawString(myLanguage[language][44], 20, 90, 2); - tft.drawString(myLanguage[language][45], 20, 110, 2); + tft.drawString(myLanguage[language][39], 20, 30, GFXFF); + tft.drawString(myLanguage[language][38], 20, 50, GFXFF); + tft.drawString(myLanguage[language][43], 20, 70, GFXFF); + tft.drawString(myLanguage[language][44], 20, 90, GFXFF); + tft.drawString(myLanguage[language][45], 20, 110, GFXFF); tft.setTextColor(TFT_YELLOW); - tft.drawRightString(myLanguage[language][0], 305, 30, 2); - if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, 2); else tft.drawRightString(myLanguage[language][30], 305, 50, 2); - if (softmutefm) tft.drawRightString(myLanguage[language][42], 305, 70, 2); else tft.drawRightString(myLanguage[language][30], 305, 70, 2); - if (softmuteam) tft.drawRightString(myLanguage[language][42], 305, 90, 2); else tft.drawRightString(myLanguage[language][30], 305, 90, 2); - if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, 2); else tft.drawRightString(myLanguage[language][30], 305, 110, 2); + tft.drawRightString(myLanguage[language][0], 305, 30, GFXFF); + if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 50, GFXFF); + if (softmutefm) tft.drawRightString(myLanguage[language][42], 305, 70, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 70, GFXFF); + if (softmuteam) tft.drawRightString(myLanguage[language][42], 305, 90, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 90, GFXFF); + if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); break; } analogWrite(SMETERPIN, 0); @@ -1624,11 +1666,14 @@ void MuteScreen(int setting) { setupmode = false; } else { screenmute = 1; + tft.setFreeFont(EXO14); + tft.setTextDatum(TL_DATUM); tft.fillScreen(TFT_BLACK); tft.drawRect(0, 0, 320, 240, TFT_BLUE); tft.setTextColor(TFT_WHITE); - tft.drawCentreString(myLanguage[language][31], 160, 30, 4); - tft.drawCentreString(myLanguage[language][32], 160, 60, 2); + tft.drawCentreString(myLanguage[language][31], 160, 30, GFXFF); + tft.setFreeFont(EXO8); + tft.drawCentreString(myLanguage[language][32], 160, 60, GFXFF); } } @@ -1657,6 +1702,7 @@ void BuildDisplay() { } } tft.setTextColor(TFT_WHITE); + tft.setTextDatum(TL_DATUM); tft.drawString("SQ:", 216, 155, 2); tft.drawString("S/N", 250, 168, 2); tft.drawString("dB", 300, 168, 2); @@ -1665,24 +1711,24 @@ void BuildDisplay() { tft.drawString("PI:", 216, 195, 2); tft.drawString("PS:", 6, 195, 2); tft.drawString("PTY:", 6, 168, 2); - tft.drawString("%", 196, 153, 1); - tft.drawString("1", 24, 123, 1); - tft.drawString("3", 48, 123, 1); - tft.drawString("5", 72, 123, 1); - tft.drawString("7", 96, 123, 1); - tft.drawString("9", 120, 123, 1); - tft.drawString("+10", 134, 123, 1); - tft.drawString("+30", 174, 123, 1); - tft.drawString("20", 20, 153, 1); - tft.drawString("40", 50, 153, 1); - tft.drawString("60", 80, 153, 1); - tft.drawString("80", 110, 153, 1); - tft.drawString("100", 134, 153, 1); - tft.drawString("120", 164, 153, 1); + tft.drawString("%", 196, 150, 2); + tft.drawString("1", 24, 120, 2); + tft.drawString("3", 48, 120, 2); + tft.drawString("5", 72, 120, 2); + tft.drawString("7", 96, 120, 2); + tft.drawString("9", 120, 120, 2); + tft.drawString("+10", 134, 120, 2); + tft.drawString("+30", 174, 120, 2); + tft.drawString("20", 20, 150, 2); + tft.drawString("40", 50, 150, 2); + tft.drawString("60", 80, 150, 2); + tft.drawString("80", 110, 150, 2); + tft.drawString("100", 134, 150, 2); + tft.drawString("120", 164, 150, 2); tft.setTextColor(TFT_WHITE); tft.drawString("kHz", 225, 6, 4); tft.setTextColor(TFT_WHITE); - if (band == 0) tft.drawString("MHz", 256, 78, 4); else tft.drawString("kHz", 256, 78, 4); + if (band == 0) tft.drawString("MHz", 258, 78, 4); else tft.drawString("kHz", 258, 78, 4); tft.setTextColor(TFT_WHITE); tft.drawString("dBuV", 280, 155, 2); tft.drawPixel(295, 166, TFT_WHITE); @@ -1732,6 +1778,7 @@ void ShowFreq(int mode) { if (screenmute == false) { detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A)); detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B)); + tft.setTextDatum(TL_DATUM); if (band == 1) { unsigned int freq = frequency_AM; String count = String(freq, DEC); @@ -1790,6 +1837,7 @@ void ShowFreq(int mode) { } void ShowSignalLevel() { + tft.setTextDatum(TL_DATUM); if (band == 0) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10)); if (SNR > (SNRold + 1) || SNR < (SNRold - 1)) { @@ -1996,6 +2044,7 @@ void ShowOffset() { void ShowBW() { if (BW != BWOld || BWreset == true) { + tft.setTextDatum(TL_DATUM); tft.setTextColor(TFT_BLACK); tft.drawRightString(String (BWOld, DEC), 218, 6, 4); if (BWset == 0) tft.setTextColor(TFT_SKYBLUE); else tft.setTextColor(TFT_YELLOW); @@ -2040,6 +2089,7 @@ void ShowModLevel() { } void doSquelch() { + tft.setTextDatum(TL_DATUM); if (USBstatus == false) { Squelch = analogRead(PIN_POT) / 4 - 100; if (Squelch > 920) Squelch = 920; @@ -2121,6 +2171,7 @@ void doSquelch() { } void updateBW() { + tft.setTextDatum(TL_DATUM); if (BWset == 0) { if (screenmute == false) { tft.drawRoundRect(249, 35, 68, 20, 5, TFT_WHITE); @@ -2138,6 +2189,7 @@ void updateBW() { } void updateiMS() { + tft.setTextDatum(TL_DATUM); if (band == 0) { if (iMSset == 0) { if (screenmute == false) { @@ -2158,6 +2210,7 @@ void updateiMS() { } void updateEQ() { + tft.setTextDatum(TL_DATUM); if (band == 0) { if (EQset == 0) { if (screenmute == false) { @@ -2301,6 +2354,7 @@ void doTuneMode() { } void ShowTuneMode() { + tft.setTextDatum(TL_DATUM); switch (tunemode) { case 0: tft.drawRoundRect(3, 57, 40, 20, 5, TFT_GREYOUT); @@ -2773,9 +2827,12 @@ void SetTunerPatch() { TEF = highByte(hw) * 100 + highByte(sw); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE); + tft.setFreeFont(EXO14); + tft.setTextDatum(MC_DATUM); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); - if (TEF == 0) tft.drawCentreString(myLanguage[language][35], 150, 70, 4); else tft.drawCentreString(String(myLanguage[language][36]) + String(TEF), 150, 70, 4); - tft.drawCentreString(myLanguage[language][37], 150, 100, 4); + + if (TEF == 0) tft.drawCentreString(myLanguage[language][35], 150, 70, GFXFF); else tft.drawCentreString(String(myLanguage[language][36]) + String(TEF), 150, 70, GFXFF); + tft.drawCentreString(myLanguage[language][37], 150, 100, GFXFF); EEPROM.writeByte(54, TEF); EEPROM.commit(); while (true); diff --git a/src/font.h b/src/font.h new file mode 100644 index 0000000..65547a5 --- /dev/null +++ b/src/font.h @@ -0,0 +1,1147 @@ +const uint8_t Exo2_Regular14pt8bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0xCF, 0x3C, 0xF3, 0xCF, 0x30, 0x03, 0x0C, + 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC1, 0xFF, 0xFD, 0xFF, + 0xFC, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x0C, 0x03, 0x06, 0x01, 0x82, 0x0F, + 0xFF, 0xE0, 0xC1, 0x80, 0x60, 0xC0, 0x30, 0x60, 0x18, 0x30, 0x0C, 0x10, + 0x0C, 0x18, 0x00, 0x02, 0x00, 0x20, 0x02, 0x07, 0xFE, 0xFF, 0xEE, 0x20, + 0xC2, 0x0C, 0x20, 0xC2, 0x0C, 0x60, 0xE6, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, + 0x04, 0x70, 0x47, 0x04, 0x30, 0x43, 0x04, 0x70, 0x47, 0xFF, 0xEF, 0xFC, + 0x0C, 0x00, 0xC0, 0x08, 0x00, 0x3F, 0x00, 0xC1, 0xCC, 0x02, 0x04, 0x18, + 0x18, 0x30, 0x60, 0xC0, 0xC1, 0x82, 0x03, 0x06, 0x18, 0x0C, 0x18, 0xC0, + 0x30, 0x62, 0x00, 0x61, 0x99, 0xF1, 0xFC, 0xCF, 0xE3, 0xE2, 0x30, 0xC0, + 0x18, 0x83, 0x00, 0xC6, 0x0C, 0x02, 0x18, 0x30, 0x18, 0x60, 0xC0, 0x40, + 0x83, 0x03, 0x03, 0x0C, 0x18, 0x0E, 0x70, 0xC0, 0x1F, 0x80, 0x3F, 0xF0, + 0x1F, 0xFC, 0x07, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x03, 0x06, + 0x00, 0xC1, 0x80, 0x30, 0x3F, 0xFF, 0x87, 0xFF, 0xE7, 0x00, 0xC3, 0x80, + 0x30, 0xC0, 0x0C, 0x30, 0x03, 0x0C, 0x00, 0xC3, 0x80, 0x70, 0xE0, 0x7C, + 0x1F, 0xFB, 0xF3, 0xFC, 0x7C, 0xFF, 0xF0, 0x01, 0x07, 0x0C, 0x18, 0x38, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x1C, 0x0E, 0x03, 0x01, 0x81, 0x81, + 0xC1, 0xC1, 0x81, 0x83, 0x07, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x86, 0x1C, 0x71, 0x82, 0x00, 0x0C, 0x01, + 0x00, 0x43, 0x97, 0x17, 0x03, 0x01, 0xA0, 0xCC, 0x21, 0x00, 0x04, 0x00, + 0x40, 0x04, 0x00, 0x40, 0x04, 0x0F, 0xFF, 0xFF, 0xF0, 0x40, 0x04, 0x00, + 0x40, 0x04, 0x00, 0x40, 0xFD, 0xF4, 0xFF, 0xFF, 0xFC, 0x00, 0x30, 0x03, + 0x00, 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x03, 0x00, 0x30, + 0x06, 0x00, 0x60, 0x0C, 0x00, 0x80, 0x18, 0x03, 0x00, 0x30, 0x06, 0x00, + 0x60, 0x0C, 0x00, 0xC0, 0x00, 0x1F, 0xC1, 0xFF, 0x1C, 0x1D, 0xC0, 0xEE, + 0x03, 0x60, 0x1B, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0xDC, 0x06, 0x70, 0x73, 0xFF, 0x07, 0xF0, + 0x1E, 0xFF, 0xDC, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0xFF, 0xCF, 0xFE, 0x00, 0xE0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xE0, 0x0C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x7F, 0xC7, + 0xFE, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, 0x70, 0x06, 0x1F, 0xC1, + 0xFE, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x77, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x00, 0xC3, + 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x61, 0x80, 0xC7, + 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x3F, 0xF3, 0xFF, 0x70, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x07, 0xC0, 0x7F, 0xC0, 0x7E, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x30, 0x07, 0x00, 0x77, 0xFE, 0xFF, 0xC0, 0x1F, 0xE3, 0xFE, 0x70, + 0x06, 0x00, 0xE0, 0x0C, 0x00, 0xC0, 0x0C, 0xFC, 0xFF, 0xEE, 0x07, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x03, 0x60, 0x77, 0xFE, 0x3F, + 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, + 0x0C, 0x01, 0xC0, 0x18, 0x01, 0x80, 0x38, 0x03, 0x00, 0x30, 0x07, 0x00, + 0x60, 0x06, 0x00, 0xE0, 0x0C, 0x00, 0x3F, 0xC3, 0xFF, 0x98, 0x1D, 0xC0, + 0x6E, 0x03, 0x70, 0x1B, 0x80, 0xCC, 0x06, 0x3F, 0xE1, 0xFF, 0x1C, 0x1D, + 0xC0, 0x6C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x33, 0xFF, 0x8F, + 0xF8, 0x3F, 0x87, 0xFE, 0xE0, 0xEC, 0x06, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, + 0x07, 0xC0, 0x7E, 0x0F, 0xFF, 0xF7, 0xF7, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0xE7, 0xFC, 0xFF, 0x80, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, + 0x7D, 0x00, 0x10, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x0E, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x1C, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x01, 0xC0, 0x78, 0x3C, 0x1E, 0x1F, 0x03, 0x00, 0x00, 0x04, 0x0F, + 0xFC, 0xE3, 0xE0, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x01, 0xC0, + 0x38, 0x03, 0x00, 0x60, 0x06, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x1F, 0xFC, 0x7F, 0xFE, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x03, 0xC3, 0xFF, 0xC7, 0xFF, 0xC6, 0x03, 0xC6, 0x03, 0xC6, 0x07, + 0xC7, 0x3F, 0xC7, 0xF3, 0xC0, 0x80, 0xE0, 0x00, 0x60, 0x00, 0x7C, 0x00, + 0x3F, 0xFF, 0x07, 0xF8, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xD8, 0x00, 0xEE, + 0x00, 0x63, 0x00, 0x31, 0x80, 0x38, 0xE0, 0x18, 0x30, 0x0C, 0x18, 0x0E, + 0x0E, 0x06, 0x03, 0x03, 0xFF, 0x83, 0xFF, 0xE1, 0xC0, 0x30, 0xC0, 0x18, + 0xE0, 0x0E, 0x70, 0x07, 0x30, 0x01, 0xB8, 0x00, 0xE0, 0xFF, 0xE7, 0xFF, + 0xB8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x06, 0xFF, 0xE7, + 0xFF, 0x38, 0x1D, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, + 0x3F, 0xFF, 0xFF, 0xFC, 0x1F, 0xF1, 0xFF, 0x9C, 0x01, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x70, 0x01, 0xFF, 0x87, 0xFE, 0xFF, + 0xE1, 0xFF, 0xE3, 0x80, 0xE7, 0x00, 0xEE, 0x01, 0xDC, 0x01, 0xB8, 0x03, + 0x70, 0x06, 0xE0, 0x0D, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x6E, 0x00, 0xDC, + 0x01, 0xB8, 0x07, 0x70, 0x0E, 0xE0, 0x39, 0xFF, 0xF3, 0xFF, 0x80, 0x3F, + 0xF7, 0xFF, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, + 0xEF, 0xFE, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x07, 0xFF, 0x3F, 0xF0, 0x3F, 0xF7, 0xFF, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xEF, 0xFE, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x00, 0x1F, 0xF9, 0xFF, + 0xDC, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0x70, + 0x7B, 0xFF, 0xC7, 0xE2, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x1F, 0xFF, + 0x80, 0xE0, 0x3B, 0x80, 0xCE, 0x07, 0x38, 0x38, 0xE0, 0xC3, 0x87, 0x0E, + 0x38, 0x39, 0xC0, 0xFE, 0x03, 0xF8, 0x0E, 0x70, 0x38, 0xE0, 0xE1, 0x83, + 0x87, 0x0E, 0x0E, 0x38, 0x18, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xC0, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0F, 0xFC, + 0xFF, 0x80, 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x6C, 0x03, 0x66, 0xC0, 0x36, + 0x6E, 0x07, 0x66, 0x60, 0x66, 0x66, 0x06, 0x6E, 0x70, 0xE7, 0xE3, 0x0C, + 0x7E, 0x30, 0xC7, 0xE3, 0x0C, 0x7E, 0x39, 0xC7, 0xE1, 0x98, 0x7E, 0x19, + 0x87, 0xE1, 0xF8, 0x7E, 0x0F, 0x03, 0xE0, 0xF0, 0x3C, 0x00, 0x03, 0xC0, + 0x00, 0x30, 0x70, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x60, 0x3E, 0xC0, 0x7C, + 0xC0, 0xF9, 0x81, 0xF3, 0x83, 0xE3, 0x07, 0xC7, 0x0F, 0x86, 0x1F, 0x0E, + 0x3E, 0x0C, 0x7C, 0x1C, 0xF8, 0x19, 0xF0, 0x3B, 0xE0, 0x37, 0xC0, 0x7F, + 0x80, 0x78, 0x1F, 0xE0, 0x7F, 0xF1, 0xC0, 0xE7, 0x00, 0xEE, 0x01, 0xDC, + 0x01, 0xB0, 0x03, 0x60, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0xDC, 0x01, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x38, 0x7F, 0xF0, + 0x7F, 0x80, 0xFF, 0xE7, 0xFF, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xF0, 0x0F, + 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x0F, 0xBF, 0xFD, 0xFF, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x00, 0x1F, 0xE0, 0x7F, + 0xF1, 0xC0, 0xE7, 0x00, 0xEE, 0x01, 0xDC, 0x01, 0xB0, 0x03, 0x60, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xB8, + 0x03, 0x70, 0x0E, 0x70, 0x38, 0x7F, 0xF0, 0x7F, 0xC0, 0x00, 0x00, 0x20, + 0x00, 0xF8, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x08, 0xFF, 0xE3, 0xFF, 0xCE, + 0x03, 0xB8, 0x0E, 0xE0, 0x1B, 0x80, 0x6E, 0x01, 0xB8, 0x0E, 0xE0, 0x73, + 0xFF, 0x8F, 0xFC, 0x38, 0x38, 0xE0, 0x73, 0x80, 0xCE, 0x03, 0x38, 0x0E, + 0xE0, 0x3B, 0x80, 0x6E, 0x01, 0xC0, 0x7F, 0xEF, 0xFE, 0xE0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x7E, 0x03, 0xFC, 0x07, 0xE0, 0x07, + 0x00, 0x70, 0x03, 0x00, 0x30, 0x07, 0x00, 0x7F, 0xFE, 0xFF, 0xC0, 0xFF, + 0xFF, 0xFF, 0xF0, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7E, 0x01, 0xD8, + 0x07, 0x70, 0x38, 0xFF, 0xE1, 0xFE, 0x00, 0xE0, 0x03, 0x60, 0x07, 0x70, + 0x06, 0x30, 0x06, 0x30, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x18, 0x0C, 0x18, + 0x1C, 0x1C, 0x18, 0x0C, 0x18, 0x0C, 0x38, 0x0E, 0x30, 0x06, 0x30, 0x06, + 0x70, 0x07, 0x60, 0x03, 0x60, 0x03, 0xE0, 0x03, 0xC0, 0xC0, 0x3C, 0x07, + 0xE0, 0x3C, 0x07, 0xE0, 0x7E, 0x07, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x0E, 0x70, 0x66, 0x0E, 0x70, 0xE7, 0x0E, 0x30, 0xC3, 0x0C, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x1C, 0x39, 0xC3, 0x1C, 0x39, 0xC3, 0x9C, + 0x19, 0x81, 0x98, 0x19, 0x81, 0x98, 0x19, 0x81, 0xB8, 0x1F, 0x81, 0xB8, + 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0xE0, 0x0E, 0xC0, 0x39, 0xC0, 0x61, + 0x81, 0xC3, 0x83, 0x03, 0x8E, 0x03, 0x18, 0x07, 0x70, 0x07, 0xC0, 0x0F, + 0x80, 0x3B, 0x00, 0x67, 0x01, 0xC7, 0x03, 0x06, 0x0E, 0x0E, 0x18, 0x0C, + 0x70, 0x1D, 0xC0, 0x1B, 0x80, 0x38, 0xE0, 0x0E, 0xE0, 0x1C, 0xC0, 0x31, + 0xC0, 0xE1, 0x81, 0x83, 0x87, 0x03, 0x0C, 0x07, 0x30, 0x06, 0x60, 0x0D, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, 0x00, + 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x1C, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0xFF, 0xFF, + 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xFB, 0xC0, 0xC0, 0x0C, 0x00, 0x60, 0x02, 0x00, + 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x0C, 0x00, 0x60, 0x06, 0x00, 0x30, + 0x03, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, + 0x00, 0x30, 0xF8, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0xFB, 0xC0, 0x1C, 0x05, + 0x83, 0x31, 0x86, 0xC0, 0xA0, 0x10, 0xFF, 0xFF, 0xFF, 0x43, 0x87, 0x0E, + 0x0C, 0x0F, 0x87, 0xFE, 0x60, 0xF0, 0x03, 0x00, 0x30, 0x03, 0x3F, 0xF7, + 0xFF, 0xE0, 0x3E, 0x03, 0xE0, 0x76, 0x0F, 0x7F, 0xB3, 0xE3, 0xC0, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x30, 0xCF, 0xEF, 0x9E, 0xF0, 0x7C, + 0x07, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x7F, + 0xFE, 0xFF, 0xC0, 0x07, 0x87, 0xFD, 0xF0, 0x38, 0x06, 0x00, 0xC0, 0x38, + 0x07, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x38, 0x03, 0xFE, 0x3F, 0xC0, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x71, 0xC7, 0x7F, 0xFF, 0x1F, 0xE0, + 0x7C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x07, 0xE0, + 0xF7, 0xFB, 0x7E, 0x30, 0x07, 0x03, 0xFE, 0x7C, 0xF7, 0x03, 0x60, 0x36, + 0x03, 0xE0, 0x7F, 0xFF, 0x60, 0x06, 0x00, 0x60, 0x07, 0x00, 0x3F, 0xF1, + 0xFF, 0x07, 0xC7, 0xF3, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x83, 0xFE, 0x38, + 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, + 0x80, 0xE0, 0x07, 0x00, 0xFF, 0xF7, 0x07, 0x18, 0x0C, 0x60, 0x31, 0x80, + 0xC7, 0x07, 0x0F, 0xF8, 0x3F, 0x81, 0x80, 0x07, 0x00, 0x0F, 0xE0, 0x3F, + 0xF1, 0x81, 0xEC, 0x01, 0xB0, 0x06, 0xE0, 0x3B, 0xF7, 0xE7, 0xFF, 0x00, + 0x80, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x1C, 0xCF, 0xED, + 0xC7, 0xF0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, + 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x30, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x77, 0x70, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x76, 0xEC, 0x40, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x70, + 0x36, 0x0C, 0xE3, 0x98, 0xE3, 0x38, 0x7E, 0x0C, 0xE1, 0x8E, 0x30, 0xC6, + 0x1C, 0xC1, 0xD8, 0x1B, 0x03, 0x80, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, + 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xE3, 0xF7, 0xC0, 0x03, 0x81, 0xCC, + 0xFC, 0x7E, 0xFC, 0xFC, 0x7F, 0x07, 0x07, 0xC0, 0x60, 0x3C, 0x06, 0x03, + 0xC0, 0x60, 0x3C, 0x06, 0x03, 0xC0, 0x60, 0x3C, 0x06, 0x03, 0xC0, 0x60, + 0x3C, 0x06, 0x03, 0xC0, 0x60, 0x3C, 0x06, 0x03, 0x01, 0xCC, 0xFE, 0xDC, + 0x7F, 0x07, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0x0F, 0x07, 0xFC, 0x79, 0xEE, 0x07, 0xC0, + 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x7E, 0x06, 0x7F, + 0xE3, 0xFC, 0x01, 0x8C, 0xFE, 0xDC, 0xEF, 0x07, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, 0xFF, 0xED, 0xFC, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x0F, 0x07, 0xFF, 0xF8, + 0xFE, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, + 0x7E, 0x0F, 0x7F, 0xF7, 0xE7, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x03, 0xE7, 0xB7, 0xDE, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x1F, 0x87, 0xFE, 0x70, 0x0E, 0x00, + 0xE0, 0x06, 0x00, 0x7E, 0x01, 0xFC, 0x01, 0xE0, 0x06, 0x00, 0x70, 0x07, + 0x7F, 0xE7, 0xFC, 0x30, 0x18, 0x0C, 0x06, 0x0F, 0xF9, 0x80, 0xC0, 0x60, + 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xE0, 0x7E, 0x1F, 0x80, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x87, 0xFF, 0xF7, 0xE2, 0xC0, 0x3F, 0x01, 0x98, 0x0C, 0xC0, 0xE7, + 0x06, 0x18, 0x70, 0xC3, 0x07, 0x18, 0x19, 0xC0, 0xCC, 0x03, 0x60, 0x1E, + 0x00, 0xF0, 0x00, 0xC0, 0xF0, 0x3F, 0x06, 0xC1, 0x98, 0x36, 0x0C, 0xC1, + 0xB0, 0xE6, 0x19, 0x86, 0x38, 0xCC, 0x30, 0xC6, 0x31, 0x86, 0x31, 0x9C, + 0x3B, 0x0C, 0xC0, 0xD8, 0x66, 0x06, 0xC1, 0xF0, 0x3E, 0x0F, 0x00, 0xE0, + 0x78, 0x00, 0xE0, 0x7B, 0x83, 0x0C, 0x38, 0x71, 0x81, 0xD8, 0x07, 0xC0, + 0x3E, 0x03, 0xB0, 0x19, 0xC1, 0x87, 0x1C, 0x18, 0xC0, 0xEE, 0x03, 0x80, + 0xC0, 0x3F, 0x01, 0x98, 0x1C, 0xC0, 0xE7, 0x06, 0x18, 0x70, 0xC3, 0x07, + 0x18, 0x19, 0xC0, 0xEC, 0x03, 0x60, 0x1F, 0x00, 0xF0, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x70, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1E, 0x78, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, + 0xC7, 0x0E, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x1C, + 0x1E, 0x0C, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xE0, 0xE0, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x70, 0xE3, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, + 0x83, 0x0E, 0x1C, 0xF1, 0x80, 0x20, 0x1F, 0x8B, 0x3F, 0x41, 0xC0, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, 0xFF, 0x80, 0xFF, + 0xF0, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0xFF, 0x80, 0x5F, 0xB0, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x01, 0x00, + 0x20, 0x0C, 0x1F, 0xF3, 0xF6, 0xE2, 0x18, 0x43, 0x08, 0xE3, 0x1C, 0x61, + 0x8C, 0x31, 0x06, 0x20, 0xE4, 0x0F, 0xF8, 0xFF, 0x02, 0x00, 0x40, 0x08, + 0x00, 0x1F, 0xF3, 0xFE, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x00, 0xFF, 0xCF, 0xFC, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x07, + 0x00, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x80, 0x1C, 0xF3, 0x79, 0xE2, 0x06, + 0x60, 0x24, 0x02, 0x40, 0x24, 0x02, 0x60, 0x63, 0x0C, 0x7F, 0xEC, 0xF3, + 0x80, 0x10, 0xE0, 0x0E, 0xC0, 0x19, 0xC0, 0x71, 0x80, 0xC3, 0x83, 0x83, + 0x06, 0x07, 0x1C, 0x06, 0x30, 0x06, 0xC0, 0x0D, 0x81, 0xFF, 0xF1, 0xFF, + 0xE0, 0x38, 0x0F, 0xFF, 0x8F, 0xFF, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, + 0x0E, 0x00, 0xFF, 0xE1, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x0C, + 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0xCF, 0x98, 0x7B, 0x03, 0xE0, 0x3E, 0x06, + 0xF0, 0xCF, 0x98, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0x80, 0x30, 0x07, 0xFF, + 0xFF, 0xF0, 0xC7, 0x8F, 0x18, 0x03, 0xF8, 0x01, 0xC1, 0xC0, 0xE0, 0x0C, + 0x10, 0x30, 0x46, 0x3F, 0x8D, 0x8C, 0x00, 0xA1, 0x80, 0x1C, 0x60, 0x01, + 0x8C, 0x00, 0x31, 0x80, 0x06, 0x30, 0x00, 0xC6, 0x00, 0x18, 0x60, 0x07, + 0x8C, 0x00, 0xD0, 0xFF, 0x31, 0x02, 0x04, 0x30, 0x01, 0x81, 0x80, 0xC0, + 0x1F, 0xF0, 0x00, 0x3C, 0xFF, 0x03, 0x03, 0x7F, 0xC3, 0x83, 0xC7, 0xFD, + 0x71, 0x08, 0x43, 0x9C, 0x63, 0x18, 0xC6, 0x31, 0xCE, 0x31, 0x83, 0x18, + 0x31, 0x87, 0x38, 0x63, 0x06, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x03, + 0x00, 0x30, 0xFF, 0xFF, 0x0F, 0xC1, 0x81, 0x1B, 0xC4, 0x91, 0xA4, 0x84, + 0xC4, 0xC6, 0x3E, 0x29, 0x11, 0x48, 0xD1, 0x01, 0x04, 0x18, 0x1F, 0x00, + 0xFE, 0x3C, 0x66, 0xC2, 0xC3, 0x42, 0x7E, 0x18, 0x06, 0x00, 0x60, 0x06, + 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFE, 0x8E, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, + 0xFF, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0x7C, 0x06, 0x02, 0x03, 0x06, 0xFE, + 0x08, 0x73, 0x9C, 0xC0, 0xC0, 0x76, 0x03, 0xB0, 0x1D, 0x80, 0xEC, 0x07, + 0x60, 0x3B, 0x01, 0xD8, 0x0E, 0xC0, 0x76, 0x07, 0xB8, 0x7D, 0xFE, 0xFF, + 0xE3, 0xE0, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x00, 0x1F, + 0xF9, 0xF8, 0xDF, 0xC6, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, 0xFC, 0x7F, 0xE3, + 0xFF, 0x1F, 0xF8, 0xDF, 0xC6, 0xFE, 0x31, 0xF1, 0x81, 0x8C, 0x0C, 0x60, + 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x60, 0x03, 0x00, 0xFC, 0x70, 0xC4, 0x6E, 0x00, 0x3F, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x18, 0x3F, 0xB0, 0xD8, 0x28, 0x1C, 0x0F, 0x05, + 0x86, 0xFF, 0x1E, 0x00, 0x42, 0x1C, 0xE1, 0x8C, 0x18, 0xC1, 0x8C, 0x39, + 0xC3, 0x18, 0xC6, 0x31, 0x86, 0x31, 0x8C, 0x63, 0x00, 0x38, 0x01, 0x83, + 0xE0, 0x0C, 0x09, 0x80, 0x60, 0x06, 0x01, 0x00, 0x18, 0x0C, 0x00, 0x60, + 0x60, 0x01, 0x81, 0x80, 0x06, 0x0C, 0x00, 0x18, 0x21, 0x80, 0x61, 0x84, + 0x01, 0x8C, 0x31, 0x00, 0x20, 0x8C, 0x01, 0x86, 0x30, 0x0C, 0x10, 0xC0, + 0x20, 0xC3, 0x01, 0x83, 0xFF, 0x0C, 0x00, 0x30, 0x20, 0x00, 0xC1, 0x80, + 0x03, 0x00, 0x38, 0x01, 0x83, 0xE0, 0x0C, 0x09, 0x80, 0x60, 0x06, 0x01, + 0x00, 0x18, 0x0C, 0x00, 0x60, 0x60, 0x01, 0x81, 0x00, 0x06, 0x0C, 0x30, + 0x18, 0x63, 0xF8, 0x61, 0x00, 0x61, 0x8C, 0x01, 0x80, 0x60, 0x06, 0x01, + 0x00, 0x38, 0x0C, 0x01, 0xC0, 0x60, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, + 0x80, 0x20, 0x1F, 0xF1, 0x80, 0x7F, 0xC0, 0xFE, 0x00, 0xC1, 0x3C, 0x01, + 0x80, 0x08, 0x06, 0x00, 0x10, 0x08, 0x00, 0x60, 0x30, 0x0F, 0x00, 0xC0, + 0x01, 0x81, 0x00, 0x01, 0x86, 0x10, 0x03, 0x18, 0x40, 0x0E, 0x21, 0x83, + 0xF8, 0xC2, 0x37, 0xE3, 0x0C, 0x60, 0x04, 0x10, 0xC0, 0x18, 0x61, 0x80, + 0x60, 0x83, 0x00, 0x83, 0xFF, 0x03, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, + 0x00, 0x30, 0x06, 0x00, 0x60, 0x06, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x60, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x7F, 0xF1, 0xFC, 0x04, 0x00, 0x07, 0x00, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, + 0xC0, 0x03, 0x60, 0x03, 0xB8, 0x01, 0x8C, 0x00, 0xC6, 0x00, 0xE3, 0x80, + 0x60, 0xC0, 0x30, 0x60, 0x38, 0x38, 0x18, 0x0C, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0x00, 0xC3, 0x00, 0x63, 0x80, 0x39, 0xC0, 0x1C, 0xC0, 0x06, 0xE0, + 0x03, 0x80, 0x00, 0x20, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xC0, 0x03, 0x60, 0x03, 0xB8, 0x01, + 0x8C, 0x00, 0xC6, 0x00, 0xE3, 0x80, 0x60, 0xC0, 0x30, 0x60, 0x38, 0x38, + 0x18, 0x0C, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x00, 0xC3, 0x00, 0x63, 0x80, + 0x39, 0xC0, 0x1C, 0xC0, 0x06, 0xE0, 0x03, 0x80, 0x00, 0xC0, 0x00, 0xF0, + 0x00, 0xDC, 0x01, 0xC3, 0x00, 0x40, 0x80, 0x00, 0x00, 0x07, 0x80, 0x07, + 0xC0, 0x03, 0x60, 0x03, 0xB8, 0x01, 0x8C, 0x00, 0xC6, 0x00, 0xE3, 0x80, + 0x60, 0xC0, 0x30, 0x60, 0x38, 0x38, 0x18, 0x0C, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0x00, 0xC3, 0x00, 0x63, 0x80, 0x39, 0xC0, 0x1C, 0xC0, 0x06, 0xE0, + 0x03, 0x80, 0x07, 0x88, 0x06, 0xFC, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x06, 0xC0, 0x07, 0x70, 0x03, 0x18, 0x01, + 0x8C, 0x01, 0xC7, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x70, 0x70, 0x30, 0x18, + 0x1F, 0xFC, 0x1F, 0xFF, 0x0E, 0x01, 0x86, 0x00, 0xC7, 0x00, 0x73, 0x80, + 0x39, 0x80, 0x0D, 0xC0, 0x07, 0x06, 0x30, 0x03, 0x18, 0x01, 0x8C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x06, 0xC0, 0x07, 0x70, + 0x03, 0x18, 0x01, 0x8C, 0x01, 0xC7, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x70, + 0x70, 0x30, 0x18, 0x1F, 0xFC, 0x1F, 0xFF, 0x0E, 0x01, 0x86, 0x00, 0xC7, + 0x00, 0x73, 0x80, 0x39, 0x80, 0x0D, 0xC0, 0x07, 0x00, 0x80, 0x01, 0xE0, + 0x01, 0x88, 0x00, 0xC4, 0x00, 0x66, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x03, + 0xC0, 0x03, 0xE0, 0x01, 0xB0, 0x01, 0xDC, 0x00, 0xC6, 0x00, 0x63, 0x00, + 0x71, 0xC0, 0x30, 0x60, 0x18, 0x30, 0x1C, 0x1C, 0x0C, 0x06, 0x07, 0xFF, + 0x07, 0xFF, 0xC3, 0x80, 0x61, 0x80, 0x31, 0xC0, 0x1C, 0xE0, 0x0E, 0x60, + 0x03, 0x70, 0x01, 0xC0, 0x00, 0x0F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x36, + 0x00, 0x00, 0x6E, 0x00, 0x00, 0x6E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0xCE, + 0x00, 0x01, 0x8E, 0x00, 0x03, 0x8F, 0xFC, 0x03, 0x0F, 0xFC, 0x06, 0x0E, + 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x1C, 0x0E, 0x00, 0x18, 0x0E, + 0x00, 0x38, 0x0E, 0x00, 0x70, 0x0E, 0x00, 0x60, 0x07, 0xFF, 0xE0, 0x03, + 0xFF, 0x1F, 0xF1, 0xFF, 0x9C, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x00, + 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x70, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xFF, 0x87, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0xC0, 0x04, 0x00, 0x60, 0x0E, 0x00, 0x10, 0x03, 0x80, 0x1C, 0x00, 0xE0, + 0x03, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x7F, 0xFE, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFE, 0xFF, 0xEE, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x7F, 0xF3, 0xFF, 0x00, 0x80, 0x1C, + 0x03, 0x80, 0x70, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x7F, 0xFE, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFE, 0xFF, 0xEE, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x7F, 0xF3, 0xFF, + 0x03, 0x00, 0x78, 0x0D, 0xC3, 0x86, 0x10, 0x20, 0x00, 0x3F, 0xF7, 0xFF, + 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xEF, 0xFE, + 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0xFF, + 0x3F, 0xF0, 0x18, 0xC1, 0x8C, 0x18, 0xC0, 0x00, 0x00, 0x03, 0xFF, 0x7F, + 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFE, 0xFF, + 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x7F, + 0xF3, 0xFF, 0x43, 0x87, 0x0E, 0x0C, 0x01, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x08, 0x73, 0x9C, + 0xC0, 0x07, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x70, 0x0C, 0x0F, 0x0D, 0xDC, 0x34, 0x08, 0x00, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x00, 0xC7, 0x8F, 0x18, + 0x00, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, + 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x7F, 0xF0, 0x7F, 0xFC, 0x70, 0x1C, + 0x70, 0x0E, 0x70, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, 0x07, 0xFF, 0x07, + 0xFF, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x06, 0x70, 0x06, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x7F, 0xFC, 0x7F, 0xF0, 0x0F, 0x10, 0x37, 0xE0, + 0x63, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xEC, + 0x07, 0xD8, 0x0F, 0x98, 0x1F, 0x30, 0x3E, 0x70, 0x7C, 0x60, 0xF8, 0xE1, + 0xF0, 0xC3, 0xE1, 0xC7, 0xC1, 0x8F, 0x83, 0x9F, 0x03, 0x3E, 0x07, 0x7C, + 0x06, 0xF8, 0x0F, 0xF0, 0x0F, 0x08, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x18, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFC, 0x70, 0x39, 0xC0, 0x3B, + 0x80, 0x77, 0x00, 0x6C, 0x00, 0xD8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, + 0x0F, 0x80, 0x1F, 0x00, 0x37, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0x9C, 0x0E, + 0x1F, 0xFC, 0x1F, 0xE0, 0x00, 0x40, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x60, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFC, 0x70, 0x39, 0xC0, 0x3B, 0x80, + 0x77, 0x00, 0x6C, 0x00, 0xD8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x1F, 0x00, 0x37, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0x9C, 0x0E, 0x1F, + 0xFC, 0x1F, 0xE0, 0x03, 0x00, 0x0F, 0x00, 0x37, 0x01, 0xC3, 0x01, 0x02, + 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xFC, 0x70, 0x39, 0xC0, 0x3B, 0x80, 0x77, + 0x00, 0x6C, 0x00, 0xD8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x37, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0x9C, 0x0E, 0x1F, 0xFC, + 0x1F, 0xE0, 0x1E, 0x20, 0x6F, 0xC0, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFC, 0x0F, 0xFE, 0x38, 0x1C, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x36, 0x00, + 0x6C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1B, + 0x80, 0x37, 0x00, 0xEE, 0x01, 0xCE, 0x07, 0x0F, 0xFE, 0x0F, 0xF0, 0x0C, + 0x60, 0x18, 0xC0, 0x31, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFC, 0x0F, 0xFE, + 0x38, 0x1C, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x36, 0x00, 0x6C, 0x00, 0xF8, + 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1B, 0x80, 0x37, 0x00, + 0xEE, 0x01, 0xCE, 0x07, 0x0F, 0xFE, 0x0F, 0xF0, 0x40, 0x5C, 0x1C, 0xC7, + 0x0D, 0xC0, 0xF0, 0x1E, 0x06, 0xE1, 0x8E, 0xE0, 0xE8, 0x0C, 0x00, 0x10, + 0x00, 0x30, 0x7F, 0xC1, 0xFF, 0xC7, 0x03, 0x9C, 0x0F, 0xB8, 0x17, 0x70, + 0x66, 0xC0, 0x8D, 0x83, 0x1F, 0x04, 0x3E, 0x18, 0x7C, 0x20, 0xF8, 0xC1, + 0xF1, 0x03, 0x76, 0x06, 0xEC, 0x1D, 0xD0, 0x39, 0xE0, 0xE1, 0xFF, 0xC3, + 0xFE, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x01, 0x80, 0x00, 0x0E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xE0, 0x1D, 0x80, 0x77, 0x03, 0x8F, 0xFE, + 0x1F, 0xE0, 0x00, 0x40, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x07, 0xE0, 0x1D, 0x80, 0x77, 0x03, 0x8F, 0xFE, 0x1F, 0xE0, 0x03, 0x00, + 0x1E, 0x00, 0xDC, 0x0E, 0x18, 0x10, 0x20, 0x00, 0x0E, 0x00, 0xF8, 0x03, + 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xE0, 0x1D, 0x80, + 0x77, 0x03, 0x8F, 0xFE, 0x1F, 0xE0, 0x0C, 0x60, 0x31, 0x80, 0xC6, 0x00, + 0x00, 0x00, 0x03, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3E, 0x01, 0xF8, 0x07, 0x60, 0x1D, 0xC0, 0xE3, 0xFF, 0x87, 0xF8, + 0x00, 0x20, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x30, 0x00, 0x00, 0x38, + 0x03, 0xB8, 0x07, 0x30, 0x0C, 0x70, 0x38, 0x60, 0x60, 0xE1, 0xC0, 0xC3, + 0x01, 0xCC, 0x01, 0x98, 0x03, 0x60, 0x03, 0xC0, 0x07, 0x00, 0x06, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xFE, 0x0F, 0xFE, 0x7F, 0xFB, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xFF, 0xFB, 0xFF, 0x9C, + 0x00, 0xE0, 0x07, 0x00, 0x38, 0x00, 0x07, 0xE0, 0x0F, 0xFE, 0x07, 0x07, + 0x07, 0x01, 0xC3, 0x80, 0xE1, 0xC0, 0x60, 0xE0, 0xE1, 0xF0, 0xE0, 0xF8, + 0xC0, 0x1C, 0xE0, 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x87, 0x81, 0xC1, 0xF0, + 0xE0, 0x1C, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x01, 0x8E, 0x7F, 0xC7, 0x3F, + 0xC0, 0x10, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x0F, 0x87, + 0xFE, 0x60, 0xF0, 0x03, 0x00, 0x30, 0x03, 0x3F, 0xF7, 0xFF, 0xE0, 0x3E, + 0x03, 0xE0, 0x76, 0x0F, 0x7F, 0xB3, 0xE3, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x70, 0x0C, 0x00, 0x00, 0x0F, 0x87, 0xFE, 0x60, 0xF0, 0x03, 0x00, 0x30, + 0x03, 0x3F, 0xF7, 0xFF, 0xE0, 0x3E, 0x03, 0xE0, 0x76, 0x0F, 0x7F, 0xB3, + 0xE3, 0x03, 0x00, 0x78, 0x0D, 0xC3, 0x86, 0x10, 0x20, 0x00, 0x0F, 0x87, + 0xFE, 0x60, 0xF0, 0x03, 0x00, 0x30, 0x03, 0x3F, 0xF7, 0xFF, 0xE0, 0x3E, + 0x03, 0xE0, 0x76, 0x0F, 0x7F, 0xB3, 0xE3, 0x1E, 0x23, 0x7E, 0x31, 0xC0, + 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xE6, 0x0F, 0x00, 0x30, 0x03, 0x00, 0x33, + 0xFF, 0x7F, 0xFE, 0x03, 0xE0, 0x3E, 0x07, 0x60, 0xF7, 0xFB, 0x3E, 0x30, + 0x18, 0xC1, 0x8C, 0x18, 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xE6, 0x0F, + 0x00, 0x30, 0x03, 0x00, 0x33, 0xFF, 0x7F, 0xFE, 0x03, 0xE0, 0x3E, 0x07, + 0x60, 0xF7, 0xFB, 0x3E, 0x30, 0x02, 0x00, 0xF0, 0x18, 0x81, 0x88, 0x19, + 0x80, 0xF0, 0x00, 0x00, 0xF8, 0x7F, 0xE6, 0x0F, 0x00, 0x30, 0x03, 0x00, + 0x33, 0xFF, 0x7F, 0xFE, 0x03, 0xE0, 0x3E, 0x07, 0x60, 0xF7, 0xFB, 0x3E, + 0x30, 0x0F, 0x83, 0xC1, 0xFF, 0xFF, 0xC6, 0x0F, 0xE3, 0x80, 0x0E, 0x06, + 0x00, 0x30, 0x1C, 0x00, 0xC0, 0x73, 0xFF, 0x03, 0x9F, 0xFF, 0xFE, 0xE0, + 0x30, 0x03, 0x80, 0xC0, 0x0E, 0x07, 0x80, 0x18, 0x3E, 0x00, 0x7F, 0x9F, + 0xF8, 0xFC, 0x3F, 0xE0, 0x07, 0x87, 0xFD, 0xF0, 0x38, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x38, 0x03, 0xFE, 0x3F, 0xC0, + 0x00, 0x38, 0x01, 0x80, 0x20, 0x0C, 0x07, 0x00, 0x10, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x03, 0x00, 0x00, 0x07, 0x03, 0xFE, 0x7C, 0xF7, 0x03, 0x60, + 0x36, 0x03, 0xE0, 0x7F, 0xFF, 0x60, 0x06, 0x00, 0x60, 0x07, 0x00, 0x3F, + 0xF1, 0xFF, 0x00, 0x80, 0x1C, 0x03, 0x80, 0x70, 0x0C, 0x00, 0x00, 0x07, + 0x03, 0xFE, 0x7C, 0xF7, 0x03, 0x60, 0x36, 0x03, 0xE0, 0x7F, 0xFF, 0x60, + 0x06, 0x00, 0x60, 0x07, 0x00, 0x3F, 0xF1, 0xFF, 0x03, 0x00, 0x78, 0x0D, + 0xC3, 0x86, 0x10, 0x20, 0x00, 0x07, 0x03, 0xFE, 0x7C, 0xF7, 0x03, 0x60, + 0x36, 0x03, 0xE0, 0x7F, 0xFF, 0x60, 0x06, 0x00, 0x60, 0x07, 0x00, 0x3F, + 0xF1, 0xFF, 0x18, 0xC1, 0x8C, 0x18, 0xC0, 0x00, 0x00, 0x00, 0x70, 0x3F, + 0xE7, 0xCF, 0x70, 0x36, 0x03, 0x60, 0x3E, 0x07, 0xFF, 0xF6, 0x00, 0x60, + 0x06, 0x00, 0x70, 0x03, 0xFF, 0x1F, 0xF0, 0x43, 0x87, 0x0E, 0x0C, 0x00, + 0x07, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x08, 0x73, + 0x9C, 0xC0, 0x00, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x0C, 0x0F, 0x0D, 0xDC, 0x34, 0x08, 0x00, 0x00, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x80, + 0xC7, 0x8F, 0x18, 0x00, 0x00, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0x00, 0x47, 0xCC, 0x7F, 0x80, 0x78, 0x0D, + 0xC0, 0x8C, 0x00, 0xE0, 0x06, 0x3F, 0xE7, 0xFE, 0xE0, 0x6C, 0x07, 0xC0, + 0x7C, 0x07, 0xC0, 0x6C, 0x06, 0xC0, 0x6E, 0x0E, 0x7F, 0xC3, 0xF8, 0x1E, + 0x23, 0x7E, 0x31, 0xC0, 0x00, 0x00, 0x00, 0x1C, 0xCF, 0xED, 0xC7, 0xF0, + 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x30, 0x20, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, + 0x00, 0x0F, 0x07, 0xFC, 0x79, 0xEE, 0x07, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, + 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x7E, 0x06, 0x7F, 0xE3, 0xFC, 0x00, 0x80, + 0x1C, 0x03, 0x80, 0x70, 0x0C, 0x00, 0x00, 0x0F, 0x07, 0xFC, 0x79, 0xEE, + 0x07, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x7E, + 0x06, 0x7F, 0xE3, 0xFC, 0x06, 0x00, 0xF0, 0x1B, 0x87, 0x0C, 0x20, 0x40, + 0x00, 0x0F, 0x07, 0xFC, 0x79, 0xEE, 0x07, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, + 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x7E, 0x06, 0x7F, 0xE3, 0xFC, 0x3C, 0x46, + 0xFC, 0x63, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xC7, 0x9E, 0xE0, 0x7C, + 0x07, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x7C, 0x07, 0xE0, 0x67, + 0xFE, 0x3F, 0xC0, 0x31, 0x83, 0x18, 0x31, 0x80, 0x00, 0x00, 0x00, 0xF0, + 0x7F, 0xC7, 0x9E, 0xE0, 0x7C, 0x07, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x7C, 0x07, 0xE0, 0x67, 0xFE, 0x3F, 0xC0, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x00, 0x40, 0xFC, 0x7F, 0xC7, 0x9E, 0xE1, 0x7C, 0x37, 0xC2, + 0x3C, 0x63, 0xC4, 0x3C, 0xC3, 0xC8, 0x7C, 0x87, 0xF0, 0x67, 0xFE, 0x3F, + 0xC2, 0x00, 0x60, 0x00, 0x20, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x00, + 0x00, 0x06, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x7C, 0x3F, 0xFF, 0xBF, 0x10, 0x00, 0x80, 0x38, 0x0E, + 0x03, 0x80, 0xC0, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x3F, 0xFF, 0xBF, 0x10, + 0x06, 0x01, 0xE0, 0x6E, 0x38, 0x62, 0x04, 0x00, 0x00, 0x06, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, + 0x3F, 0xFF, 0xBF, 0x10, 0x31, 0x86, 0x30, 0xC6, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xE1, 0xFF, 0xFD, 0xF8, 0x80, 0x00, 0x80, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x07, 0xE0, 0x33, 0x03, 0x98, + 0x1C, 0xE0, 0xC3, 0x0E, 0x18, 0x60, 0xE3, 0x03, 0x38, 0x1D, 0x80, 0x6C, + 0x03, 0xE0, 0x1E, 0x00, 0x70, 0x03, 0x00, 0x38, 0x03, 0x80, 0x38, 0x01, + 0x00, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x30, 0xDF, + 0xEF, 0x9E, 0xE0, 0x7C, 0x07, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x07, 0xE0, 0x7F, 0xFE, 0xDF, 0xCC, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x00, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0xFC, 0x06, 0x60, 0x73, 0x03, 0x9C, 0x18, 0x61, 0xC3, + 0x0C, 0x1C, 0x60, 0x67, 0x03, 0xB0, 0x0D, 0x80, 0x7C, 0x03, 0xC0, 0x0E, + 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x20, 0x00 }; + +const GFXglyph Exo2_Regular14pt8bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 19, 7, 3, -18 }, // 0x21 '!' + { 5, 6, 6, 10, 2, -18 }, // 0x22 '"' + { 10, 17, 19, 19, 1, -18 }, // 0x23 '#' + { 51, 12, 25, 15, 2, -21 }, // 0x24 '$' + { 89, 22, 19, 25, 1, -18 }, // 0x25 '%' + { 142, 18, 19, 21, 2, -18 }, // 0x26 '&' + { 185, 2, 6, 6, 2, -18 }, // 0x27 ''' + { 187, 8, 27, 10, 1, -21 }, // 0x28 '(' + { 214, 7, 27, 10, 1, -21 }, // 0x29 ')' + { 238, 10, 9, 12, 1, -18 }, // 0x2A '*' + { 250, 12, 12, 15, 2, -13 }, // 0x2B '+' + { 268, 2, 7, 6, 2, -2 }, // 0x2C ',' + { 270, 8, 2, 12, 2, -7 }, // 0x2D '-' + { 272, 2, 3, 6, 2, -2 }, // 0x2E '.' + { 273, 12, 21, 14, 1, -18 }, // 0x2F '/' + { 305, 13, 19, 17, 2, -18 }, // 0x30 '0' + { 336, 7, 19, 11, 1, -18 }, // 0x31 '1' + { 353, 12, 19, 15, 2, -18 }, // 0x32 '2' + { 382, 12, 19, 15, 1, -18 }, // 0x33 '3' + { 411, 15, 19, 17, 1, -18 }, // 0x34 '4' + { 447, 12, 19, 15, 1, -18 }, // 0x35 '5' + { 476, 12, 19, 16, 2, -18 }, // 0x36 '6' + { 505, 12, 19, 14, 1, -18 }, // 0x37 '7' + { 534, 13, 19, 17, 2, -18 }, // 0x38 '8' + { 565, 12, 19, 16, 2, -18 }, // 0x39 '9' + { 594, 2, 12, 6, 2, -11 }, // 0x3A ':' + { 597, 2, 16, 7, 2, -11 }, // 0x3B ';' + { 601, 12, 11, 15, 1, -13 }, // 0x3C '<' + { 618, 12, 8, 16, 2, -11 }, // 0x3D '=' + { 630, 11, 11, 15, 2, -13 }, // 0x3E '>' + { 646, 12, 20, 14, 1, -19 }, // 0x3F '?' + { 676, 16, 18, 20, 2, -15 }, // 0x40 '@' + { 712, 17, 19, 17, 0, -18 }, // 0x41 'A' + { 753, 13, 19, 17, 2, -18 }, // 0x42 'B' + { 784, 13, 19, 16, 2, -18 }, // 0x43 'C' + { 815, 15, 19, 18, 2, -18 }, // 0x44 'D' + { 851, 12, 19, 15, 2, -18 }, // 0x45 'E' + { 880, 12, 19, 15, 2, -18 }, // 0x46 'F' + { 909, 13, 19, 17, 2, -18 }, // 0x47 'G' + { 940, 14, 19, 18, 2, -18 }, // 0x48 'H' + { 974, 3, 19, 7, 2, -18 }, // 0x49 'I' + { 982, 6, 19, 9, 1, -18 }, // 0x4A 'J' + { 997, 14, 19, 16, 2, -18 }, // 0x4B 'K' + { 1031, 11, 19, 14, 2, -18 }, // 0x4C 'L' + { 1058, 20, 19, 24, 2, -18 }, // 0x4D 'M' + { 1106, 15, 19, 19, 2, -18 }, // 0x4E 'N' + { 1142, 15, 19, 18, 2, -18 }, // 0x4F 'O' + { 1178, 13, 19, 16, 2, -18 }, // 0x50 'P' + { 1209, 15, 25, 18, 2, -18 }, // 0x51 'Q' + { 1256, 14, 19, 17, 2, -18 }, // 0x52 'R' + { 1290, 12, 19, 15, 2, -18 }, // 0x53 'S' + { 1319, 14, 19, 16, 1, -18 }, // 0x54 'T' + { 1353, 14, 19, 18, 2, -18 }, // 0x55 'U' + { 1387, 16, 19, 17, 0, -18 }, // 0x56 'V' + { 1425, 24, 19, 26, 1, -18 }, // 0x57 'W' + { 1482, 15, 19, 17, 1, -18 }, // 0x58 'X' + { 1518, 15, 19, 16, 0, -18 }, // 0x59 'Y' + { 1554, 13, 19, 16, 1, -18 }, // 0x5A 'Z' + { 1585, 5, 26, 9, 3, -20 }, // 0x5B '[' + { 1602, 12, 21, 14, 1, -18 }, // 0x5C '\' + { 1634, 6, 26, 9, 1, -20 }, // 0x5D ']' + { 1654, 10, 6, 12, 1, -15 }, // 0x5E '^' + { 1662, 12, 2, 12, 0, 1 }, // 0x5F '_' + { 1665, 6, 5, 9, 1, -19 }, // 0x60 '`' + { 1669, 12, 14, 15, 1, -13 }, // 0x61 'a' + { 1690, 12, 19, 16, 2, -18 }, // 0x62 'b' + { 1719, 11, 14, 13, 1, -13 }, // 0x63 'c' + { 1739, 12, 19, 16, 2, -18 }, // 0x64 'd' + { 1768, 12, 14, 15, 1, -13 }, // 0x65 'e' + { 1789, 10, 20, 10, 1, -19 }, // 0x66 'f' + { 1814, 14, 20, 15, 1, -13 }, // 0x67 'g' + { 1849, 12, 19, 16, 2, -18 }, // 0x68 'h' + { 1878, 3, 19, 7, 2, -18 }, // 0x69 'i' + { 1886, 4, 25, 7, 1, -18 }, // 0x6A 'j' + { 1899, 11, 19, 14, 2, -18 }, // 0x6B 'k' + { 1926, 6, 19, 8, 2, -18 }, // 0x6C 'l' + { 1941, 20, 14, 24, 2, -13 }, // 0x6D 'm' + { 1976, 12, 14, 16, 2, -13 }, // 0x6E 'n' + { 1997, 12, 14, 16, 2, -13 }, // 0x6F 'o' + { 2018, 12, 20, 16, 2, -13 }, // 0x70 'p' + { 2048, 12, 20, 16, 2, -13 }, // 0x71 'q' + { 2078, 9, 14, 11, 2, -13 }, // 0x72 'r' + { 2094, 12, 14, 14, 1, -13 }, // 0x73 's' + { 2115, 9, 17, 10, 1, -16 }, // 0x74 't' + { 2135, 11, 13, 16, 2, -12 }, // 0x75 'u' + { 2153, 13, 13, 15, 1, -12 }, // 0x76 'v' + { 2175, 21, 13, 23, 1, -12 }, // 0x77 'w' + { 2210, 13, 13, 14, 1, -12 }, // 0x78 'x' + { 2232, 13, 19, 15, 1, -12 }, // 0x79 'y' + { 2263, 12, 13, 14, 1, -12 }, // 0x7A 'z' + { 2283, 7, 26, 9, 1, -20 }, // 0x7B '{' + { 2306, 1, 26, 7, 3, -20 }, // 0x7C '|' + { 2310, 7, 26, 9, 1, -20 }, // 0x7D '}' + { 2333, 11, 4, 14, 2, -9 }, // 0x7E '~' + { 2339, 11, 19, 17, 3, -18 }, // 0x7F + { 2366, 11, 19, 17, 3, -18 }, // 0x80 + { 2393, 11, 19, 17, 3, -18 }, // 0x81 + { 2420, 11, 19, 17, 3, -18 }, // 0x82 + { 2447, 11, 19, 17, 3, -18 }, // 0x83 + { 2474, 11, 19, 17, 3, -18 }, // 0x84 + { 2501, 11, 19, 17, 3, -18 }, // 0x85 + { 2528, 11, 19, 17, 3, -18 }, // 0x86 + { 2555, 11, 19, 17, 3, -18 }, // 0x87 + { 2582, 11, 19, 17, 3, -18 }, // 0x88 + { 2609, 11, 19, 17, 3, -18 }, // 0x89 + { 2636, 11, 19, 17, 3, -18 }, // 0x8A + { 2663, 11, 19, 17, 3, -18 }, // 0x8B + { 2690, 11, 19, 17, 3, -18 }, // 0x8C + { 2717, 11, 19, 17, 3, -18 }, // 0x8D + { 2744, 11, 19, 17, 3, -18 }, // 0x8E + { 2771, 11, 19, 17, 3, -18 }, // 0x8F + { 2798, 11, 19, 17, 3, -18 }, // 0x90 + { 2825, 11, 19, 17, 3, -18 }, // 0x91 + { 2852, 11, 19, 17, 3, -18 }, // 0x92 + { 2879, 11, 19, 17, 3, -18 }, // 0x93 + { 2906, 11, 19, 17, 3, -18 }, // 0x94 + { 2933, 11, 19, 17, 3, -18 }, // 0x95 + { 2960, 11, 19, 17, 3, -18 }, // 0x96 + { 2987, 11, 19, 17, 3, -18 }, // 0x97 + { 3014, 11, 19, 17, 3, -18 }, // 0x98 + { 3041, 11, 19, 17, 3, -18 }, // 0x99 + { 3068, 11, 19, 17, 3, -18 }, // 0x9A + { 3095, 11, 19, 17, 3, -18 }, // 0x9B + { 3122, 11, 19, 17, 3, -18 }, // 0x9C + { 3149, 11, 19, 17, 3, -18 }, // 0x9D + { 3176, 11, 19, 17, 3, -18 }, // 0x9E + { 3203, 11, 19, 17, 3, -18 }, // 0x9F + { 3230, 0, 0, 6, 0, 1 }, // 0xA0 + { 3230, 3, 19, 7, 2, -13 }, // 0xA1 + { 3238, 11, 19, 14, 1, -18 }, // 0xA2 + { 3265, 12, 19, 16, 2, -18 }, // 0xA3 + { 3294, 12, 13, 16, 2, -15 }, // 0xA4 + { 3314, 15, 19, 17, 1, -18 }, // 0xA5 + { 3350, 1, 26, 7, 3, -20 }, // 0xA6 + { 3354, 11, 23, 15, 2, -18 }, // 0xA7 + { 3386, 7, 3, 11, 2, -18 }, // 0xA8 + { 3389, 19, 19, 23, 2, -18 }, // 0xA9 + { 3435, 8, 10, 12, 2, -16 }, // 0xAA + { 3445, 11, 12, 13, 1, -12 }, // 0xAB + { 3462, 12, 5, 16, 2, -8 }, // 0xAC + { 3470, 8, 2, 12, 2, -7 }, // 0xAD + { 3472, 13, 12, 15, 1, -18 }, // 0xAE + { 3492, 7, 1, 11, 2, -17 }, // 0xAF + { 3493, 8, 7, 10, 1, -18 }, // 0xB0 + { 3500, 12, 12, 16, 2, -13 }, // 0xB1 + { 3518, 8, 11, 11, 2, -20 }, // 0xB2 + { 3529, 8, 11, 11, 2, -20 }, // 0xB3 + { 3540, 6, 5, 9, 1, -19 }, // 0xB4 + { 3544, 13, 19, 16, 2, -12 }, // 0xB5 + { 3575, 13, 25, 16, 1, -18 }, // 0xB6 + { 3616, 2, 3, 6, 2, -7 }, // 0xB7 + { 3617, 5, 5, 6, 1, 2 }, // 0xB8 + { 3621, 5, 11, 8, 1, -20 }, // 0xB9 + { 3628, 9, 10, 12, 2, -16 }, // 0xBA + { 3640, 11, 12, 13, 1, -12 }, // 0xBB + { 3657, 22, 19, 24, 1, -18 }, // 0xBC + { 3710, 22, 19, 24, 1, -18 }, // 0xBD + { 3763, 23, 19, 26, 2, -18 }, // 0xBE + { 3818, 12, 20, 14, 1, -13 }, // 0xBF + { 3848, 17, 25, 17, 0, -24 }, // 0xC0 + { 3902, 17, 25, 17, 0, -24 }, // 0xC1 + { 3956, 17, 25, 17, 0, -24 }, // 0xC2 + { 4010, 17, 24, 17, 0, -23 }, // 0xC3 + { 4061, 17, 24, 17, 0, -23 }, // 0xC4 + { 4112, 17, 26, 17, 0, -25 }, // 0xC5 + { 4168, 24, 19, 25, 0, -18 }, // 0xC6 + { 4225, 13, 25, 16, 2, -18 }, // 0xC7 + { 4266, 12, 26, 15, 2, -25 }, // 0xC8 + { 4305, 12, 26, 15, 2, -25 }, // 0xC9 + { 4344, 12, 25, 15, 2, -24 }, // 0xCA + { 4382, 12, 24, 15, 2, -23 }, // 0xCB + { 4418, 6, 25, 7, -1, -24 }, // 0xCC + { 4437, 6, 25, 7, 1, -24 }, // 0xCD + { 4456, 9, 25, 7, -1, -24 }, // 0xCE + { 4485, 7, 24, 7, 0, -23 }, // 0xCF + { 4506, 16, 19, 18, 1, -18 }, // 0xD0 + { 4544, 15, 24, 19, 2, -23 }, // 0xD1 + { 4589, 15, 25, 18, 2, -24 }, // 0xD2 + { 4636, 15, 25, 18, 2, -24 }, // 0xD3 + { 4683, 15, 25, 18, 2, -24 }, // 0xD4 + { 4730, 15, 24, 18, 2, -23 }, // 0xD5 + { 4775, 15, 24, 18, 2, -23 }, // 0xD6 + { 4820, 11, 10, 13, 1, -12 }, // 0xD7 + { 4834, 15, 23, 18, 2, -20 }, // 0xD8 + { 4878, 14, 25, 18, 2, -24 }, // 0xD9 + { 4922, 14, 25, 18, 2, -24 }, // 0xDA + { 4966, 14, 25, 18, 2, -24 }, // 0xDB + { 5010, 14, 24, 18, 2, -23 }, // 0xDC + { 5052, 15, 25, 16, 0, -24 }, // 0xDD + { 5099, 13, 19, 16, 2, -18 }, // 0xDE + { 5130, 17, 20, 19, 1, -19 }, // 0xDF + { 5173, 12, 20, 15, 1, -19 }, // 0xE0 + { 5203, 12, 20, 15, 1, -19 }, // 0xE1 + { 5233, 12, 20, 15, 1, -19 }, // 0xE2 + { 5263, 12, 19, 15, 1, -18 }, // 0xE3 + { 5292, 12, 19, 15, 1, -18 }, // 0xE4 + { 5321, 12, 21, 15, 1, -20 }, // 0xE5 + { 5353, 22, 14, 24, 1, -13 }, // 0xE6 + { 5392, 11, 20, 13, 1, -13 }, // 0xE7 + { 5420, 12, 20, 15, 1, -19 }, // 0xE8 + { 5450, 12, 20, 15, 1, -19 }, // 0xE9 + { 5480, 12, 20, 15, 1, -19 }, // 0xEA + { 5510, 12, 19, 15, 1, -18 }, // 0xEB + { 5539, 6, 20, 7, -1, -19 }, // 0xEC + { 5554, 6, 20, 7, 1, -19 }, // 0xED + { 5569, 9, 20, 7, -1, -19 }, // 0xEE + { 5592, 7, 19, 7, 0, -18 }, // 0xEF + { 5609, 12, 20, 15, 2, -19 }, // 0xF0 + { 5639, 12, 19, 16, 2, -18 }, // 0xF1 + { 5668, 12, 20, 16, 2, -19 }, // 0xF2 + { 5698, 12, 20, 16, 2, -19 }, // 0xF3 + { 5728, 12, 20, 16, 2, -19 }, // 0xF4 + { 5758, 12, 19, 16, 2, -18 }, // 0xF5 + { 5787, 12, 19, 16, 2, -18 }, // 0xF6 + { 5816, 12, 12, 16, 2, -13 }, // 0xF7 + { 5834, 12, 17, 16, 2, -14 }, // 0xF8 + { 5860, 11, 20, 16, 2, -19 }, // 0xF9 + { 5888, 11, 20, 16, 2, -19 }, // 0xFA + { 5916, 11, 20, 16, 2, -19 }, // 0xFB + { 5944, 11, 19, 16, 2, -18 }, // 0xFC + { 5971, 13, 26, 15, 1, -19 }, // 0xFD + { 6014, 12, 25, 16, 2, -18 }, // 0xFE + { 6052, 13, 25, 15, 1, -18 } }; // 0xFF + +const uint8_t Exo2_Regular8pt8bBitmaps[] PROGMEM = { + 0xFF, 0xF5, 0x3C, 0xB6, 0xD0, 0x11, 0x08, 0x88, 0x9F, 0xF2, 0x21, 0x10, + 0x89, 0xFE, 0x44, 0x22, 0x11, 0x00, 0x08, 0x21, 0xFE, 0x89, 0x12, 0x34, + 0x3E, 0x16, 0x24, 0x48, 0xBF, 0xC4, 0x08, 0x00, 0xF0, 0x49, 0x88, 0x89, + 0x08, 0x90, 0x8A, 0x0F, 0x2F, 0x05, 0x10, 0x91, 0x09, 0x11, 0x11, 0x20, + 0xF0, 0x7E, 0x10, 0x0C, 0x03, 0x04, 0x41, 0x0F, 0xFC, 0x13, 0x04, 0xC1, + 0x30, 0xC7, 0xDC, 0xF0, 0x36, 0x4C, 0x88, 0x88, 0x88, 0xC4, 0x42, 0x10, + 0x84, 0x22, 0x33, 0x33, 0x33, 0x22, 0x4C, 0x80, 0x21, 0x3E, 0xA5, 0x00, + 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, 0x00, 0xF0, 0xF8, 0xB0, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0xC0, 0x3C, 0x8F, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0xC2, 0x8D, 0xF0, 0x3F, 0x11, 0x11, 0x11, + 0x11, 0x10, 0xFC, 0x08, 0x18, 0x20, 0xC1, 0x04, 0x18, 0x61, 0x83, 0xF8, + 0xFC, 0x08, 0x10, 0x20, 0xCF, 0x81, 0x03, 0x06, 0x0B, 0xF0, 0x10, 0x30, + 0x26, 0x66, 0x46, 0xC6, 0x86, 0xFF, 0x06, 0x06, 0x06, 0xFD, 0x83, 0x04, + 0x0E, 0x07, 0x81, 0x03, 0x04, 0x0B, 0xF0, 0x3C, 0xC3, 0x06, 0x0B, 0xD8, + 0xE0, 0xC1, 0xC3, 0x8D, 0xF0, 0xFC, 0x08, 0x10, 0x60, 0x81, 0x06, 0x08, + 0x10, 0x60, 0x80, 0x7C, 0x8F, 0x0E, 0x14, 0x2F, 0xB0, 0xC1, 0x83, 0x85, + 0xF8, 0x7D, 0x8A, 0x1C, 0x38, 0x38, 0xDE, 0x83, 0x06, 0x0B, 0xF0, 0xB0, + 0x2C, 0xB0, 0x2A, 0x80, 0x04, 0x66, 0x20, 0x70, 0x30, 0x40, 0xFE, 0x00, + 0x00, 0x0F, 0xE0, 0x81, 0x81, 0xC1, 0x3B, 0x88, 0x00, 0xFC, 0x10, 0x41, + 0x08, 0x43, 0x08, 0x00, 0x82, 0x00, 0x7F, 0xE0, 0x70, 0x33, 0xF9, 0x0C, + 0x8E, 0x7B, 0x80, 0x40, 0x1F, 0xC0, 0x0C, 0x07, 0x01, 0x60, 0x48, 0x32, + 0x08, 0xC3, 0xF1, 0xFC, 0x41, 0x90, 0x2C, 0x0C, 0xFC, 0xC2, 0xC2, 0xC2, + 0xC2, 0xFC, 0xC2, 0xC3, 0xC3, 0xC3, 0xFE, 0x3E, 0xC3, 0x06, 0x08, 0x10, + 0x20, 0x60, 0xC0, 0x81, 0xF8, 0xFE, 0xC3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, + 0xC1, 0xC1, 0xC3, 0xFE, 0x7F, 0x83, 0x06, 0x0C, 0x1F, 0xB0, 0x60, 0xC1, + 0x81, 0xF8, 0x7F, 0x83, 0x06, 0x0C, 0x1F, 0xB0, 0x60, 0xC1, 0x83, 0x00, + 0x3F, 0x60, 0xC0, 0xC0, 0x80, 0x83, 0x83, 0xC3, 0xC3, 0x43, 0x7D, 0xC1, + 0xC1, 0xC1, 0xC1, 0xC1, 0xFF, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xFF, 0xFF, + 0xFC, 0x11, 0x11, 0x11, 0x11, 0x13, 0xF0, 0xC3, 0xC6, 0xC4, 0xC8, 0xD8, + 0xF0, 0xD8, 0xCC, 0xC4, 0xC6, 0xC3, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x81, 0xF8, 0x60, 0xE7, 0x0A, 0xD0, 0xAD, 0x0A, 0xD1, 0xAD, + 0x92, 0xC9, 0x2C, 0xB2, 0xCE, 0x2C, 0x63, 0xC0, 0x30, 0xE1, 0xF0, 0xFC, + 0x7A, 0x3D, 0x9E, 0x4F, 0x37, 0x8B, 0xC7, 0xE1, 0xF0, 0xE0, 0x3E, 0x31, + 0xB0, 0x58, 0x28, 0x14, 0x0E, 0x05, 0x82, 0xC1, 0x21, 0x9F, 0x80, 0xFC, + 0xC6, 0xC3, 0xC3, 0xC2, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x3E, 0x31, + 0xB0, 0x58, 0x28, 0x14, 0x0E, 0x05, 0x82, 0xC1, 0x21, 0x9F, 0x80, 0x01, + 0xC0, 0x38, 0xFE, 0xC2, 0xC3, 0xC3, 0xC2, 0xFE, 0xCC, 0xC2, 0xC2, 0xC3, + 0xC3, 0x7F, 0x82, 0x04, 0x0C, 0x0F, 0x81, 0x81, 0x02, 0x0F, 0xF0, 0xFF, + 0x84, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x43, 0x3E, 0xC0, + 0xA0, 0xD0, 0x6C, 0x22, 0x11, 0x18, 0xC8, 0x24, 0x16, 0x0A, 0x03, 0x00, + 0xC3, 0x85, 0x0A, 0x14, 0x28, 0xD8, 0xA3, 0x66, 0xC8, 0x93, 0x22, 0x44, + 0x89, 0x16, 0x3C, 0x58, 0xF1, 0xC1, 0x83, 0x00, 0x41, 0xB0, 0x88, 0xC6, + 0x41, 0x60, 0xE0, 0x58, 0x64, 0x23, 0x30, 0xB0, 0x60, 0xC1, 0xA0, 0x98, + 0xC4, 0x43, 0x60, 0xA0, 0x70, 0x10, 0x08, 0x04, 0x02, 0x00, 0xFE, 0x0C, + 0x10, 0x61, 0x82, 0x0C, 0x30, 0x41, 0x03, 0xF8, 0xFC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0x70, 0xC0, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, + 0x04, 0x04, 0x02, 0x03, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF0, 0x31, 0x2C, + 0x40, 0xFE, 0x88, 0x80, 0xFA, 0x10, 0x5F, 0x86, 0x18, 0xFD, 0xC1, 0x83, + 0x06, 0xEE, 0x78, 0x70, 0xE1, 0xC3, 0x8F, 0xF0, 0x3F, 0x08, 0x20, 0x82, + 0x0C, 0x1F, 0x06, 0x0C, 0x1B, 0xFC, 0xF0, 0xE1, 0xC3, 0x87, 0x8D, 0xE8, + 0x79, 0x8A, 0x1C, 0x3F, 0xD0, 0x30, 0x3E, 0x3C, 0x82, 0x3F, 0x20, 0x82, + 0x08, 0x20, 0x82, 0x00, 0x7F, 0x8A, 0x1C, 0x27, 0xD0, 0x3C, 0x4F, 0x83, + 0x0F, 0xF0, 0xC1, 0x83, 0x06, 0xEA, 0x78, 0x70, 0xE1, 0xC3, 0x87, 0x08, + 0xF3, 0xFF, 0xFC, 0x6C, 0x36, 0xDB, 0x6D, 0xB5, 0x80, 0xC1, 0x83, 0x06, + 0x2C, 0x9B, 0x3C, 0x68, 0xD9, 0x9B, 0x18, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x70, 0x9C, 0xEE, 0x72, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, + 0x63, 0x9D, 0x4F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x39, 0x8E, 0x1C, 0x18, + 0x30, 0x71, 0xBE, 0x9D, 0x4F, 0x0E, 0x1C, 0x38, 0x71, 0xFE, 0xC1, 0x83, + 0x00, 0x3D, 0x8E, 0x1C, 0x38, 0x70, 0xF1, 0xBF, 0x06, 0x0C, 0x18, 0x9F, + 0xB1, 0x8C, 0x63, 0x18, 0x7E, 0x08, 0x38, 0x3C, 0x10, 0x7F, 0x20, 0x8F, + 0xC8, 0x20, 0x82, 0x08, 0x20, 0xE0, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF3, + 0xBD, 0xC1, 0x43, 0x42, 0x66, 0x24, 0x34, 0x1C, 0x18, 0xC2, 0x1A, 0x28, + 0x91, 0x44, 0xCA, 0x62, 0xD2, 0x14, 0x50, 0xA3, 0x83, 0x18, 0x43, 0x62, + 0x24, 0x1C, 0x1C, 0x24, 0x62, 0xC3, 0xC1, 0x43, 0x42, 0x66, 0x24, 0x34, + 0x1C, 0x18, 0x08, 0x10, 0x70, 0xFC, 0x10, 0x84, 0x21, 0x8C, 0x3F, 0x69, + 0x24, 0xA6, 0x49, 0x24, 0x88, 0xFF, 0xFE, 0xC9, 0x24, 0x8B, 0x49, 0x24, + 0xA0, 0xFC, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x1F, 0xC0, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x1F, 0xC0, 0xF0, + 0xFF, 0xFC, 0x08, 0x47, 0xF4, 0x92, 0x49, 0x34, 0x7C, 0x41, 0x00, 0x3E, + 0xC1, 0x02, 0x04, 0x1F, 0x98, 0x30, 0x41, 0x83, 0xF8, 0x9A, 0xC9, 0x0C, + 0x14, 0x2C, 0xA6, 0x80, 0x81, 0xC2, 0x46, 0x64, 0x2C, 0x38, 0xFE, 0x18, + 0xFE, 0x18, 0x18, 0xFC, 0xFE, 0x7D, 0x82, 0x06, 0x03, 0x13, 0xA1, 0x62, + 0x74, 0x38, 0x10, 0x3F, 0xC2, 0x00, 0x99, 0x1F, 0x04, 0x11, 0x3D, 0x48, + 0x19, 0x03, 0x20, 0x64, 0x0C, 0x81, 0x4F, 0x4C, 0x18, 0x7C, 0x00, 0x64, + 0xDF, 0x19, 0xF4, 0x25, 0x29, 0x24, 0x49, 0xB0, 0xFE, 0x04, 0x08, 0xF8, + 0x79, 0x6A, 0xAD, 0xDA, 0xB5, 0x9E, 0x00, 0xF0, 0xE9, 0x96, 0x10, 0x23, + 0xF8, 0x81, 0x00, 0x3F, 0x80, 0xF0, 0x84, 0x44, 0x7C, 0xF1, 0x17, 0x1F, + 0x78, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xFB, 0xC0, 0x80, 0x80, + 0x7F, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0x99, 0x12, 0x24, 0x48, 0x81, 0x02, + 0x00, 0xB0, 0xD8, 0xE4, 0x92, 0x40, 0x26, 0xE3, 0x18, 0xB8, 0x91, 0x26, + 0xCB, 0x4A, 0x40, 0x40, 0x8C, 0x10, 0x41, 0x04, 0x20, 0x44, 0x04, 0x48, + 0x49, 0x21, 0x12, 0x13, 0x22, 0x0F, 0x40, 0x20, 0x40, 0x8C, 0x10, 0x41, + 0x04, 0x20, 0x44, 0xE4, 0x51, 0x48, 0x11, 0x02, 0x10, 0x42, 0x08, 0x41, + 0xF0, 0xF0, 0x20, 0x82, 0x04, 0x20, 0xE1, 0x01, 0x92, 0x0D, 0x23, 0xC9, + 0x20, 0x91, 0x08, 0x88, 0x43, 0xC4, 0x02, 0x30, 0xC0, 0x0C, 0x30, 0x84, + 0x20, 0x82, 0x0F, 0xC0, 0x10, 0x02, 0x00, 0x40, 0x30, 0x1C, 0x05, 0x81, + 0x20, 0xC8, 0x23, 0x0F, 0xC7, 0xF1, 0x06, 0x40, 0xB0, 0x30, 0x06, 0x03, + 0x00, 0x00, 0x30, 0x1C, 0x05, 0x81, 0x20, 0xC8, 0x23, 0x0F, 0xC7, 0xF1, + 0x06, 0x40, 0xB0, 0x30, 0x0C, 0x04, 0xC0, 0x00, 0x30, 0x1C, 0x05, 0x81, + 0x20, 0xC8, 0x23, 0x0F, 0xC7, 0xF1, 0x06, 0x40, 0xB0, 0x30, 0x19, 0x05, + 0x80, 0x00, 0x30, 0x1C, 0x05, 0x81, 0x20, 0xC8, 0x23, 0x0F, 0xC7, 0xF1, + 0x06, 0x40, 0xB0, 0x30, 0x12, 0x04, 0x80, 0x00, 0x30, 0x1C, 0x05, 0x81, + 0x20, 0xC8, 0x23, 0x0F, 0xC7, 0xF1, 0x06, 0x40, 0xB0, 0x30, 0x0C, 0x02, + 0x80, 0xA0, 0x10, 0x0C, 0x07, 0x01, 0x60, 0x48, 0x32, 0x08, 0xC3, 0xF1, + 0xFC, 0x41, 0x90, 0x2C, 0x0C, 0x01, 0xFC, 0x0E, 0x00, 0x50, 0x03, 0x40, + 0x09, 0x00, 0x67, 0xE1, 0xF0, 0x08, 0x40, 0x61, 0x01, 0x06, 0x0C, 0x0F, + 0xC0, 0x3E, 0xC3, 0x06, 0x08, 0x10, 0x20, 0x60, 0xC0, 0x81, 0xF8, 0x80, + 0x81, 0x04, 0x00, 0x20, 0x20, 0x23, 0xFC, 0x18, 0x30, 0x60, 0xFD, 0x83, + 0x06, 0x0C, 0x0F, 0xC0, 0x0C, 0x30, 0x03, 0xFC, 0x18, 0x30, 0x60, 0xFD, + 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x18, 0x4C, 0x03, 0xFC, 0x18, 0x30, 0x60, + 0xFD, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x24, 0x48, 0x03, 0xFC, 0x18, 0x30, + 0x60, 0xFD, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x88, 0xB6, 0xDB, 0x6D, 0xB6, + 0xC0, 0x78, 0x6D, 0xB6, 0xDB, 0x6D, 0x80, 0x64, 0xC0, 0xC6, 0x31, 0x8C, + 0x63, 0x18, 0xC6, 0x30, 0x99, 0x06, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7F, + 0x18, 0x66, 0x09, 0x82, 0x60, 0xBE, 0x36, 0x09, 0x82, 0x60, 0x98, 0x67, + 0xF0, 0x32, 0x16, 0x00, 0x1C, 0x3E, 0x1F, 0x8F, 0x47, 0xB3, 0xC9, 0xE6, + 0xF1, 0x78, 0xFC, 0x3E, 0x1C, 0x20, 0x08, 0x02, 0x07, 0xC6, 0x36, 0x0B, + 0x05, 0x02, 0x81, 0xC0, 0xB0, 0x58, 0x24, 0x33, 0xF0, 0x0C, 0x0C, 0x00, + 0x07, 0xC6, 0x36, 0x0B, 0x05, 0x02, 0x81, 0xC0, 0xB0, 0x58, 0x24, 0x33, + 0xF0, 0x18, 0x13, 0x00, 0x07, 0xC6, 0x36, 0x0B, 0x05, 0x02, 0x81, 0xC0, + 0xB0, 0x58, 0x24, 0x33, 0xF0, 0x32, 0x16, 0x00, 0x07, 0xC6, 0x36, 0x0B, + 0x05, 0x02, 0x81, 0xC0, 0xB0, 0x58, 0x24, 0x33, 0xF0, 0x24, 0x12, 0x00, + 0x07, 0xC6, 0x36, 0x0B, 0x05, 0x02, 0x81, 0xC0, 0xB0, 0x58, 0x24, 0x33, + 0xF0, 0x8D, 0xE3, 0x16, 0x8C, 0x02, 0x1F, 0x18, 0xD8, 0xAC, 0x54, 0x4A, + 0x27, 0x22, 0xD1, 0x70, 0x98, 0xCF, 0xC4, 0x00, 0x20, 0x10, 0x08, 0xC1, + 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x43, 0x3E, 0x0C, 0x18, + 0x00, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x43, 0x3E, + 0x18, 0x26, 0x00, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, + 0x43, 0x3E, 0x24, 0x24, 0x00, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, + 0xC1, 0xC1, 0x43, 0x3E, 0x06, 0x06, 0x00, 0x18, 0x34, 0x13, 0x18, 0x88, + 0x6C, 0x14, 0x0E, 0x02, 0x01, 0x00, 0x80, 0x40, 0xC0, 0xC0, 0xFC, 0xC6, + 0xC3, 0xC3, 0xC3, 0xC6, 0xFC, 0xC0, 0xC0, 0x3F, 0x88, 0x22, 0x1B, 0x8C, + 0x24, 0x09, 0x02, 0x70, 0x86, 0x20, 0x48, 0x12, 0x7C, 0x40, 0x81, 0x3E, + 0x84, 0x17, 0xE1, 0x86, 0x3F, 0x40, 0x18, 0xC0, 0x3E, 0x84, 0x17, 0xE1, + 0x86, 0x3F, 0x40, 0x31, 0x30, 0x3E, 0x84, 0x17, 0xE1, 0x86, 0x3F, 0x40, + 0x65, 0x60, 0x3E, 0x84, 0x17, 0xE1, 0x86, 0x3F, 0x40, 0x49, 0x20, 0x3E, + 0x84, 0x17, 0xE1, 0x86, 0x3F, 0x40, 0x30, 0xA2, 0x84, 0xFA, 0x10, 0x5F, + 0x86, 0x18, 0xFD, 0xF9, 0xE8, 0x63, 0x06, 0x17, 0xC3, 0x87, 0xE8, 0x60, + 0x8E, 0x0F, 0x3F, 0x3F, 0x08, 0x20, 0x82, 0x0C, 0x1F, 0x20, 0x41, 0x08, + 0x40, 0x40, 0x43, 0xCC, 0x50, 0xE1, 0xFE, 0x81, 0x81, 0xF0, 0x0C, 0x30, + 0x03, 0xCC, 0x50, 0xE1, 0xFE, 0x81, 0x81, 0xF0, 0x30, 0x98, 0x03, 0xCC, + 0x50, 0xE1, 0xFE, 0x81, 0x81, 0xF0, 0x48, 0x90, 0x03, 0xCC, 0x50, 0xE1, + 0xFE, 0x81, 0x81, 0xF0, 0x88, 0xB6, 0xDB, 0x6D, 0x80, 0x78, 0x6D, 0xB6, + 0xDB, 0x00, 0x64, 0xC0, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x99, 0x06, 0x66, + 0x66, 0x66, 0x60, 0x74, 0x30, 0xB0, 0x27, 0xF8, 0xE1, 0xC3, 0x87, 0x89, + 0xF0, 0x64, 0xB0, 0x04, 0xEA, 0x78, 0x70, 0xE1, 0xC3, 0x87, 0x08, 0x40, + 0x40, 0x41, 0xCC, 0x70, 0xE0, 0xC1, 0x83, 0x8D, 0xF0, 0x0C, 0x30, 0x01, + 0xCC, 0x70, 0xE0, 0xC1, 0x83, 0x8D, 0xF0, 0x30, 0x98, 0x01, 0xCC, 0x70, + 0xE0, 0xC1, 0x83, 0x8D, 0xF0, 0x64, 0xB0, 0x01, 0xCC, 0x70, 0xE0, 0xC1, + 0x83, 0x8D, 0xF0, 0x48, 0x90, 0x01, 0xCC, 0x70, 0xE0, 0xC1, 0x83, 0x8D, + 0xF0, 0x10, 0x20, 0x07, 0xF0, 0x02, 0x04, 0x00, 0x04, 0x73, 0x3C, 0x79, + 0x32, 0x68, 0xF3, 0x7C, 0x80, 0x40, 0x40, 0x46, 0x3C, 0x78, 0xF1, 0xE3, + 0xC7, 0x9D, 0xE8, 0x0C, 0x30, 0x06, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x9D, + 0xE8, 0x30, 0x98, 0x06, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x9D, 0xE8, 0x48, + 0x90, 0x06, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x9D, 0xE8, 0x0C, 0x18, 0x00, + 0xC1, 0x43, 0x42, 0x66, 0x24, 0x34, 0x1C, 0x18, 0x08, 0x10, 0x70, 0xC1, + 0x83, 0x06, 0xEE, 0x78, 0x70, 0xE1, 0xC3, 0x8F, 0xF6, 0x0C, 0x18, 0x00, + 0x24, 0x24, 0x00, 0xC1, 0x43, 0x42, 0x66, 0x24, 0x34, 0x1C, 0x18, 0x08, + 0x10, 0x70 }; + +const GFXglyph Exo2_Regular8pt8bGlyphs[] PROGMEM = { + { 0, 0, 0, 4, 0, 1 }, // 0x20 ' ' + { 0, 2, 11, 4, 1, -10 }, // 0x21 '!' + { 3, 3, 4, 6, 1, -10 }, // 0x22 '"' + { 5, 9, 11, 11, 1, -10 }, // 0x23 '#' + { 18, 7, 15, 9, 1, -12 }, // 0x24 '$' + { 32, 12, 11, 14, 1, -10 }, // 0x25 '%' + { 49, 10, 11, 12, 1, -10 }, // 0x26 '&' + { 63, 1, 4, 3, 1, -10 }, // 0x27 ''' + { 64, 4, 15, 6, 1, -11 }, // 0x28 '(' + { 72, 4, 15, 6, 1, -11 }, // 0x29 ')' + { 80, 5, 5, 7, 1, -10 }, // 0x2A '*' + { 84, 7, 7, 9, 1, -7 }, // 0x2B '+' + { 91, 1, 4, 4, 1, -1 }, // 0x2C ',' + { 92, 5, 1, 7, 1, -3 }, // 0x2D '-' + { 93, 2, 2, 4, 1, -1 }, // 0x2E '.' + { 94, 8, 12, 8, 0, -10 }, // 0x2F '/' + { 106, 7, 11, 9, 1, -10 }, // 0x30 '0' + { 116, 4, 11, 6, 0, -10 }, // 0x31 '1' + { 122, 7, 11, 9, 1, -10 }, // 0x32 '2' + { 132, 7, 11, 9, 1, -10 }, // 0x33 '3' + { 142, 8, 11, 10, 1, -10 }, // 0x34 '4' + { 153, 7, 11, 8, 1, -10 }, // 0x35 '5' + { 163, 7, 11, 9, 1, -10 }, // 0x36 '6' + { 173, 7, 11, 8, 1, -10 }, // 0x37 '7' + { 183, 7, 11, 10, 1, -10 }, // 0x38 '8' + { 193, 7, 11, 9, 1, -10 }, // 0x39 '9' + { 203, 2, 7, 4, 1, -6 }, // 0x3A ':' + { 205, 2, 9, 4, 1, -6 }, // 0x3B ';' + { 208, 6, 7, 8, 1, -7 }, // 0x3C '<' + { 214, 7, 5, 9, 1, -6 }, // 0x3D '=' + { 219, 6, 7, 8, 1, -7 }, // 0x3E '>' + { 225, 6, 11, 8, 1, -10 }, // 0x3F '?' + { 234, 9, 10, 11, 1, -8 }, // 0x40 '@' + { 246, 10, 11, 10, 0, -10 }, // 0x41 'A' + { 260, 8, 11, 10, 1, -10 }, // 0x42 'B' + { 271, 7, 11, 9, 1, -10 }, // 0x43 'C' + { 281, 8, 11, 10, 1, -10 }, // 0x44 'D' + { 292, 7, 11, 9, 1, -10 }, // 0x45 'E' + { 302, 7, 11, 8, 1, -10 }, // 0x46 'F' + { 312, 8, 11, 10, 1, -10 }, // 0x47 'G' + { 323, 8, 11, 10, 1, -10 }, // 0x48 'H' + { 334, 2, 11, 4, 1, -10 }, // 0x49 'I' + { 337, 4, 11, 5, 0, -10 }, // 0x4A 'J' + { 343, 8, 11, 9, 1, -10 }, // 0x4B 'K' + { 354, 7, 11, 8, 1, -10 }, // 0x4C 'L' + { 364, 12, 11, 14, 1, -10 }, // 0x4D 'M' + { 381, 9, 11, 11, 1, -10 }, // 0x4E 'N' + { 394, 9, 11, 10, 1, -10 }, // 0x4F 'O' + { 407, 8, 11, 9, 1, -10 }, // 0x50 'P' + { 418, 9, 14, 10, 1, -10 }, // 0x51 'Q' + { 434, 8, 11, 10, 1, -10 }, // 0x52 'R' + { 445, 7, 11, 9, 1, -10 }, // 0x53 'S' + { 455, 9, 11, 9, 0, -10 }, // 0x54 'T' + { 468, 8, 11, 10, 1, -10 }, // 0x55 'U' + { 479, 9, 11, 10, 0, -10 }, // 0x56 'V' + { 492, 14, 11, 15, 0, -10 }, // 0x57 'W' + { 512, 9, 11, 10, 0, -10 }, // 0x58 'X' + { 525, 9, 11, 9, 0, -10 }, // 0x59 'Y' + { 538, 7, 11, 9, 1, -10 }, // 0x5A 'Z' + { 548, 4, 15, 5, 1, -11 }, // 0x5B '[' + { 556, 8, 12, 8, 0, -10 }, // 0x5C '\' + { 568, 3, 15, 5, 1, -11 }, // 0x5D ']' + { 574, 6, 3, 7, 0, -8 }, // 0x5E '^' + { 577, 7, 1, 7, 0, 1 }, // 0x5F '_' + { 578, 3, 3, 5, 1, -10 }, // 0x60 '`' + { 580, 6, 8, 9, 1, -7 }, // 0x61 'a' + { 586, 7, 11, 9, 1, -10 }, // 0x62 'b' + { 596, 6, 8, 8, 1, -7 }, // 0x63 'c' + { 602, 7, 11, 9, 1, -10 }, // 0x64 'd' + { 612, 7, 8, 8, 1, -7 }, // 0x65 'e' + { 619, 6, 11, 6, 0, -10 }, // 0x66 'f' + { 628, 7, 11, 9, 1, -7 }, // 0x67 'g' + { 638, 7, 11, 9, 1, -10 }, // 0x68 'h' + { 648, 2, 11, 4, 1, -10 }, // 0x69 'i' + { 651, 3, 14, 4, 0, -10 }, // 0x6A 'j' + { 657, 7, 11, 8, 1, -10 }, // 0x6B 'k' + { 667, 4, 11, 5, 1, -10 }, // 0x6C 'l' + { 673, 12, 8, 14, 1, -7 }, // 0x6D 'm' + { 685, 7, 8, 9, 1, -7 }, // 0x6E 'n' + { 692, 7, 8, 9, 1, -7 }, // 0x6F 'o' + { 699, 7, 11, 9, 1, -7 }, // 0x70 'p' + { 709, 7, 11, 9, 1, -7 }, // 0x71 'q' + { 719, 5, 8, 6, 1, -7 }, // 0x72 'r' + { 724, 6, 8, 8, 1, -7 }, // 0x73 's' + { 730, 6, 10, 6, 0, -9 }, // 0x74 't' + { 738, 7, 8, 9, 1, -7 }, // 0x75 'u' + { 745, 8, 8, 8, 0, -7 }, // 0x76 'v' + { 753, 13, 8, 13, 0, -7 }, // 0x77 'w' + { 766, 8, 8, 8, 0, -7 }, // 0x78 'x' + { 774, 8, 11, 8, 0, -7 }, // 0x79 'y' + { 785, 6, 8, 8, 1, -7 }, // 0x7A 'z' + { 791, 3, 15, 5, 1, -11 }, // 0x7B '{' + { 797, 1, 15, 4, 1, -11 }, // 0x7C '|' + { 799, 3, 15, 5, 1, -11 }, // 0x7D '}' + { 805, 6, 1, 8, 1, -4 }, // 0x7E '~' + { 806, 6, 11, 10, 2, -10 }, // 0x7F + { 815, 6, 11, 10, 2, -10 }, // 0x80 + { 824, 6, 11, 10, 2, -10 }, // 0x81 + { 833, 6, 11, 10, 2, -10 }, // 0x82 + { 842, 6, 11, 10, 2, -10 }, // 0x83 + { 851, 6, 11, 10, 2, -10 }, // 0x84 + { 860, 6, 11, 10, 2, -10 }, // 0x85 + { 869, 6, 11, 10, 2, -10 }, // 0x86 + { 878, 6, 11, 10, 2, -10 }, // 0x87 + { 887, 6, 11, 10, 2, -10 }, // 0x88 + { 896, 6, 11, 10, 2, -10 }, // 0x89 + { 905, 6, 11, 10, 2, -10 }, // 0x8A + { 914, 6, 11, 10, 2, -10 }, // 0x8B + { 923, 6, 11, 10, 2, -10 }, // 0x8C + { 932, 6, 11, 10, 2, -10 }, // 0x8D + { 941, 6, 11, 10, 2, -10 }, // 0x8E + { 950, 6, 11, 10, 2, -10 }, // 0x8F + { 959, 6, 11, 10, 2, -10 }, // 0x90 + { 968, 6, 11, 10, 2, -10 }, // 0x91 + { 977, 6, 11, 10, 2, -10 }, // 0x92 + { 986, 6, 11, 10, 2, -10 }, // 0x93 + { 995, 6, 11, 10, 2, -10 }, // 0x94 + { 1004, 6, 11, 10, 2, -10 }, // 0x95 + { 1013, 6, 11, 10, 2, -10 }, // 0x96 + { 1022, 6, 11, 10, 2, -10 }, // 0x97 + { 1031, 6, 11, 10, 2, -10 }, // 0x98 + { 1040, 6, 11, 10, 2, -10 }, // 0x99 + { 1049, 6, 11, 10, 2, -10 }, // 0x9A + { 1058, 6, 11, 10, 2, -10 }, // 0x9B + { 1067, 6, 11, 10, 2, -10 }, // 0x9C + { 1076, 6, 11, 10, 2, -10 }, // 0x9D + { 1085, 6, 11, 10, 2, -10 }, // 0x9E + { 1094, 6, 11, 10, 2, -10 }, // 0x9F + { 1103, 0, 0, 4, 0, 1 }, // 0xA0 + { 1103, 2, 11, 4, 1, -7 }, // 0xA1 + { 1106, 6, 11, 8, 1, -10 }, // 0xA2 + { 1115, 7, 11, 9, 1, -10 }, // 0xA3 + { 1125, 7, 7, 9, 1, -8 }, // 0xA4 + { 1132, 8, 11, 10, 1, -10 }, // 0xA5 + { 1143, 1, 15, 4, 1, -11 }, // 0xA6 + { 1145, 7, 14, 9, 1, -10 }, // 0xA7 + { 1158, 4, 2, 6, 1, -10 }, // 0xA8 + { 1159, 11, 11, 13, 1, -10 }, // 0xA9 + { 1175, 5, 6, 7, 1, -9 }, // 0xAA + { 1179, 6, 6, 8, 1, -6 }, // 0xAB + { 1184, 7, 3, 9, 1, -4 }, // 0xAC + { 1187, 5, 1, 7, 1, -3 }, // 0xAD + { 1188, 7, 7, 9, 1, -10 }, // 0xAE + { 1195, 4, 1, 6, 1, -10 }, // 0xAF + { 1196, 4, 4, 6, 1, -10 }, // 0xB0 + { 1198, 7, 7, 9, 1, -7 }, // 0xB1 + { 1205, 5, 6, 6, 1, -11 }, // 0xB2 + { 1209, 4, 6, 6, 1, -11 }, // 0xB3 + { 1212, 3, 2, 5, 1, -10 }, // 0xB4 + { 1213, 8, 11, 9, 1, -7 }, // 0xB5 + { 1224, 7, 14, 9, 1, -10 }, // 0xB6 + { 1237, 2, 2, 4, 1, -4 }, // 0xB7 + { 1238, 2, 3, 4, 1, 2 }, // 0xB8 + { 1239, 3, 6, 5, 0, -11 }, // 0xB9 + { 1242, 5, 6, 7, 1, -9 }, // 0xBA + { 1246, 6, 6, 8, 1, -6 }, // 0xBB + { 1251, 12, 11, 14, 1, -10 }, // 0xBC + { 1268, 12, 11, 14, 1, -10 }, // 0xBD + { 1285, 13, 11, 15, 1, -10 }, // 0xBE + { 1303, 6, 11, 8, 1, -7 }, // 0xBF + { 1312, 10, 14, 10, 0, -13 }, // 0xC0 + { 1330, 10, 14, 10, 0, -13 }, // 0xC1 + { 1348, 10, 14, 10, 0, -13 }, // 0xC2 + { 1366, 10, 14, 10, 0, -13 }, // 0xC3 + { 1384, 10, 14, 10, 0, -13 }, // 0xC4 + { 1402, 10, 15, 10, 0, -14 }, // 0xC5 + { 1421, 14, 11, 14, 0, -10 }, // 0xC6 + { 1441, 7, 15, 9, 1, -10 }, // 0xC7 + { 1455, 7, 14, 9, 1, -13 }, // 0xC8 + { 1468, 7, 14, 9, 1, -13 }, // 0xC9 + { 1481, 7, 14, 9, 1, -13 }, // 0xCA + { 1494, 7, 14, 9, 1, -13 }, // 0xCB + { 1507, 3, 14, 4, 0, -13 }, // 0xCC + { 1513, 3, 14, 4, 1, -13 }, // 0xCD + { 1519, 5, 14, 4, 0, -13 }, // 0xCE + { 1528, 4, 14, 4, 0, -13 }, // 0xCF + { 1535, 10, 11, 10, 0, -10 }, // 0xD0 + { 1549, 9, 14, 11, 1, -13 }, // 0xD1 + { 1565, 9, 14, 10, 1, -13 }, // 0xD2 + { 1581, 9, 14, 10, 1, -13 }, // 0xD3 + { 1597, 9, 14, 10, 1, -13 }, // 0xD4 + { 1613, 9, 14, 10, 1, -13 }, // 0xD5 + { 1629, 9, 14, 10, 1, -13 }, // 0xD6 + { 1645, 6, 5, 8, 1, -6 }, // 0xD7 + { 1649, 9, 13, 10, 1, -11 }, // 0xD8 + { 1664, 8, 14, 10, 1, -13 }, // 0xD9 + { 1678, 8, 14, 10, 1, -13 }, // 0xDA + { 1692, 8, 14, 10, 1, -13 }, // 0xDB + { 1706, 8, 14, 10, 1, -13 }, // 0xDC + { 1720, 9, 14, 9, 0, -13 }, // 0xDD + { 1736, 8, 11, 9, 1, -10 }, // 0xDE + { 1747, 10, 11, 11, 0, -10 }, // 0xDF + { 1761, 6, 11, 9, 1, -10 }, // 0xE0 + { 1770, 6, 11, 9, 1, -10 }, // 0xE1 + { 1779, 6, 11, 9, 1, -10 }, // 0xE2 + { 1788, 6, 11, 9, 1, -10 }, // 0xE3 + { 1797, 6, 11, 9, 1, -10 }, // 0xE4 + { 1806, 6, 12, 9, 1, -11 }, // 0xE5 + { 1815, 12, 8, 14, 1, -7 }, // 0xE6 + { 1827, 6, 12, 8, 1, -7 }, // 0xE7 + { 1836, 7, 11, 8, 1, -10 }, // 0xE8 + { 1846, 7, 11, 8, 1, -10 }, // 0xE9 + { 1856, 7, 11, 8, 1, -10 }, // 0xEA + { 1866, 7, 11, 8, 1, -10 }, // 0xEB + { 1876, 3, 11, 4, 0, -10 }, // 0xEC + { 1881, 3, 11, 4, 1, -10 }, // 0xED + { 1886, 5, 11, 4, 0, -10 }, // 0xEE + { 1893, 4, 11, 4, 0, -10 }, // 0xEF + { 1899, 7, 11, 9, 1, -10 }, // 0xF0 + { 1909, 7, 11, 9, 1, -10 }, // 0xF1 + { 1919, 7, 11, 9, 1, -10 }, // 0xF2 + { 1929, 7, 11, 9, 1, -10 }, // 0xF3 + { 1939, 7, 11, 9, 1, -10 }, // 0xF4 + { 1949, 7, 11, 9, 1, -10 }, // 0xF5 + { 1959, 7, 11, 9, 1, -10 }, // 0xF6 + { 1969, 7, 7, 9, 1, -7 }, // 0xF7 + { 1976, 7, 10, 9, 1, -8 }, // 0xF8 + { 1985, 7, 11, 9, 1, -10 }, // 0xF9 + { 1995, 7, 11, 9, 1, -10 }, // 0xFA + { 2005, 7, 11, 9, 1, -10 }, // 0xFB + { 2015, 7, 11, 9, 1, -10 }, // 0xFC + { 2025, 8, 14, 8, 0, -10 }, // 0xFD + { 2039, 7, 14, 9, 1, -10 }, // 0xFE + { 2052, 8, 14, 8, 0, -10 } }; // 0xFF + +const GFXfont Exo2_Regular14pt8b PROGMEM = { + (uint8_t *)Exo2_Regular14pt8bBitmaps, + (GFXglyph *)Exo2_Regular14pt8bGlyphs, + 0x20, 0xFF, 33 }; + +const GFXfont Exo2_Regular8pt8b PROGMEM = { + (uint8_t *)Exo2_Regular8pt8bBitmaps, + (GFXglyph *)Exo2_Regular8pt8bGlyphs, + 0x20, 0xFF, 19 }; +