├── .gitignore ├── photos ├── conway.jpg ├── random.jpg ├── alexawemo.jpg ├── worldclock.gif └── weatherstation.gif ├── Sketches ├── Alexa │ ├── AlexaWemoSwitch │ │ ├── README.md │ │ └── AlexaWemoSwitch.ino │ └── AlexaWemoSwitchMulti │ │ └── AlexaWemoSwitchMulti.ino ├── OLED │ ├── README.md │ ├── PlaneSpotter │ │ ├── AdsbExchangeClient.h │ │ ├── images.h │ │ ├── AdsbExchangeClient.cpp │ │ └── PlaneSpotter.ino │ ├── RandomVisualizer │ │ ├── RandomVisualizer.ino │ │ └── SSD1306Wire.h │ ├── ConwaysGameOfLife │ │ └── ConwaysGameOfLife.ino │ └── WorldClock │ │ ├── WorldClock.ino │ │ ├── icons.h │ │ └── fonts.h └── LED Board │ ├── led_board_simple_colors │ └── led_board_simple_colors.ino │ ├── basic_instructions.md │ ├── led_board │ └── led_board.ino │ └── led_board_new │ └── led_board_new.ino ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.Identifier 2 | .DS_STORE 3 | .vscode/ 4 | config.h -------------------------------------------------------------------------------- /photos/conway.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ckuzma/nodemcu-as-arduino/HEAD/photos/conway.jpg -------------------------------------------------------------------------------- /photos/random.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ckuzma/nodemcu-as-arduino/HEAD/photos/random.jpg -------------------------------------------------------------------------------- /photos/alexawemo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ckuzma/nodemcu-as-arduino/HEAD/photos/alexawemo.jpg -------------------------------------------------------------------------------- /photos/worldclock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ckuzma/nodemcu-as-arduino/HEAD/photos/worldclock.gif -------------------------------------------------------------------------------- /photos/weatherstation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ckuzma/nodemcu-as-arduino/HEAD/photos/weatherstation.gif -------------------------------------------------------------------------------- /Sketches/Alexa/AlexaWemoSwitch/README.md: -------------------------------------------------------------------------------- 1 | # AlexaWemoSwitch 2 | ![Photo of NodeMCU next to Amazon Dot](https://github.com/ckuzma/nodemcu-as-arduino/blob/develop/photos/alexawemo.jpg) 3 | ## Instructions 4 | 1. Download / clone this repo's code 5 | 2. Change the device name (by default it is "Christmas Lights") 6 | 3. Install [additional libraries](https://github.com/ckuzma/nodemcu-as-arduino#external-libraries) as needed and then flash the NodeMCU 7 | 4. Connect relay device to D1 (or whatever you selected) on the NodeMCU 8 | 5. Using another device, connect to the open ESP network to configure your wireless settings 9 | 6. Restart the NodeMCU (if necessary) 10 | 7. Scan for new Smart Home devices in the Alexa app 11 | 8. Say "Alexa, turn on the christmas lights" (or whatever you chose in step 2) 12 | 13 | ## Credit 14 | This sketch began as a fork of Aruna Tennakoon's project using an Arduino D1 Mini as a WeMo switch, and then took on a bunch of modifications of its own. That original project can be found here: https://github.com/kakopappa/arduino-esp8266-alexa-wemo-switch 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Christopher Kuzma 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Sketches/OLED/README.md: -------------------------------------------------------------------------------- 1 | # NodeMCU + OLED 2 | ## Notes: 3 | These sketches interface with an OLED screen (128x64 pixels) connected via I2C on pins D3 and D4 of the NodeMCU board. (Pins can be changed as desired.) 4 | 5 | ## General Instructions 6 | *Install [additional libraries](https://github.com/ckuzma/nodemcu-as-arduino#external-libraries) as necessary* 7 | 8 | 1. Clone the repo and open up the desired sketch 9 | 2. Flash the NodeMCU firmware 10 | 3. Connect the display to pins D3 and D4 on the NodeMCU 11 | 4. Power on the NodeMCU 12 | 5. Using another device, connect to the open ESP network to configure your wireless settings 13 | 6. Restart the NodeMCU (if necessary) so that it connects to WiFi using the saved settings 14 | 7. If everything works as expected, modify the sketch with your details (eg. Latitude & longitude, UTC adjust, Weather Underground API key, block size, delay, etc.) 15 | 8. Flash the new code to your NodeMCU and enjoy 16 | 17 | ## Credit 18 | `PlaneSpotter`, `WeatherStation`, and `WorldClock` are all forks of sketches written by Daniel Eichhorn. (He's also responsible for the excellent display driver I've made liberal use of.) I made modifications, such as removing the internal temperature sensor measurements, modifying time setting, etc. to fit my use cases. You can find the original project here: https://github.com/squix78/esp8266-weather-station 19 | -------------------------------------------------------------------------------- /Sketches/OLED/PlaneSpotter/AdsbExchangeClient.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #define CURRENT 0 9 | #define TEMP 1 10 | 11 | #define MAX_AGE_MILLIS 15000 12 | 13 | 14 | class AdsbExchangeClient: public JsonListener { 15 | private: 16 | int counter = 0; 17 | String currentKey = ""; 18 | String from[2] = {"", ""}; 19 | String to[2] = {"", ""}; 20 | String altitude[2] = {"", ""}; 21 | double distance[2] = {0.0, 0.0}; 22 | double currentMinDistance = 1000.0; 23 | String aircraftType[2] = {"", ""}; 24 | String operatorCode[2] = {"", ""}; 25 | double heading[2] = {0.0, 0.0}; 26 | long lastSightingMillis = 0; 27 | 28 | public: 29 | AdsbExchangeClient(); 30 | 31 | void updateVisibleAircraft(String searchQuery); 32 | 33 | String getFrom(); 34 | String getFromIcao(); 35 | String getTo(); 36 | String getToIcao(); 37 | String getAltitude(); 38 | double getDistance(); 39 | String getAircraftType(); 40 | String getOperatorCode(); 41 | double getHeading(); 42 | int getNumberOfVisibleAircrafts(); 43 | boolean isAircraftVisible(); 44 | 45 | virtual void whitespace(char c); 46 | 47 | virtual void startDocument(); 48 | 49 | virtual void key(String key); 50 | 51 | virtual void value(String value); 52 | 53 | virtual void endArray(); 54 | 55 | virtual void endObject(); 56 | 57 | virtual void endDocument(); 58 | 59 | virtual void startArray(); 60 | 61 | virtual void startObject(); 62 | }; 63 | -------------------------------------------------------------------------------- /Sketches/LED Board/led_board_simple_colors/led_board_simple_colors.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #define LEFT_PIN D5 6 | #define RIGHT_PIN D6 7 | 8 | int displayArray[10][10][3] = {{0, 0, 0}}; 9 | 10 | Adafruit_NeoMatrix leftMatrix = Adafruit_NeoMatrix( 11 | 5, 12 | 10, 13 | LEFT_PIN, 14 | NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT + 15 | NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, 16 | NEO_GRB + NEO_KHZ800); 17 | Adafruit_NeoMatrix rightMatrix = Adafruit_NeoMatrix( 18 | 5, 19 | 10, 20 | RIGHT_PIN, 21 | NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + 22 | NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, 23 | NEO_GRB + NEO_KHZ800); 24 | 25 | void setup() { 26 | leftMatrix.begin(); 27 | rightMatrix.begin(); 28 | 29 | // Initialize the random seed 30 | randomSeed(1989); 31 | } 32 | 33 | void displayBoard() { 34 | for(int x = 0; x < 10; x++){ 35 | for(int y = 0; y < 10; y++) { 36 | int r = displayArray[x][y][0]; 37 | int g = displayArray[x][y][1]; 38 | int b = displayArray[x][y][2]; 39 | if(x < 5) { 40 | leftMatrix.drawPixel(x, y, leftMatrix.Color(r, g, b)); 41 | } 42 | else { 43 | rightMatrix.drawPixel(x-5, y, rightMatrix.Color(r, g, b)); 44 | } 45 | } 46 | } 47 | leftMatrix.show(); 48 | rightMatrix.show(); 49 | } 50 | 51 | void changePixel(int x, int y, int r, int g, int b) { 52 | displayArray[x][y][0] = r; 53 | displayArray[x][y][1] = g; 54 | displayArray[x][y][2] = b; 55 | } 56 | 57 | void makePrettyColors() { 58 | int prettyColors[3][3] = { 59 | {10, 0, 0}, 60 | {0, 10, 10}, 61 | {5, 10, 0} 62 | }; 63 | for(int x = 0; x < 10; x++) { 64 | for(int y = 0; y < 10; y++) { 65 | int colorNumber = random(3); 66 | changePixel(x, y, prettyColors[colorNumber][0], prettyColors[colorNumber][1],prettyColors[colorNumber][2]); 67 | } 68 | } 69 | } 70 | 71 | void loop() { 72 | // Simple animation 73 | makePrettyColors(); 74 | 75 | // Display it! 76 | displayBoard(); 77 | 78 | delay(800); 79 | } 80 | -------------------------------------------------------------------------------- /Sketches/OLED/PlaneSpotter/images.h: -------------------------------------------------------------------------------- 1 | #define WiFi_Logo_width 60 2 | #define WiFi_Logo_height 36 3 | const char WiFi_Logo_bits[] PROGMEM = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 7 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 9 | 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 10 | 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0xC0, 0x83, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 11 | 0x01, 0x00, 0x07, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 12 | 0xC0, 0xFF, 0xFF, 0x7C, 0x00, 0x60, 0x0C, 0x00, 0xC0, 0x31, 0x46, 0x7C, 13 | 0xFC, 0x77, 0x08, 0x00, 0xE0, 0x23, 0xC6, 0x3C, 0xFC, 0x67, 0x18, 0x00, 14 | 0xE0, 0x23, 0xE4, 0x3F, 0x1C, 0x00, 0x18, 0x00, 0xE0, 0x23, 0x60, 0x3C, 15 | 0x1C, 0x70, 0x18, 0x00, 0xE0, 0x03, 0x60, 0x3C, 0x1C, 0x70, 0x18, 0x00, 16 | 0xE0, 0x07, 0x60, 0x3C, 0xFC, 0x73, 0x18, 0x00, 0xE0, 0x87, 0x70, 0x3C, 17 | 0xFC, 0x73, 0x18, 0x00, 0xE0, 0x87, 0x70, 0x3C, 0x1C, 0x70, 0x18, 0x00, 18 | 0xE0, 0x87, 0x70, 0x3C, 0x1C, 0x70, 0x18, 0x00, 0xE0, 0x8F, 0x71, 0x3C, 19 | 0x1C, 0x70, 0x18, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x08, 0x00, 20 | 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x0C, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 21 | 0x00, 0x00, 0x06, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x07, 0x00, 22 | 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 23 | 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 24 | 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 25 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | }; 29 | 30 | const char emptySymbol[] PROGMEM = { 31 | B00000000, 32 | B00000000, 33 | B00000000, 34 | B00000000, 35 | B00000000, 36 | B00000000, 37 | B00000000, 38 | B00000000 39 | }; 40 | 41 | const char activeSymbol[] PROGMEM = { 42 | B00000000, 43 | B00000000, 44 | B00011000, 45 | B00100100, 46 | B01000010, 47 | B01000010, 48 | B00100100, 49 | B00011000 50 | }; 51 | 52 | const char inactiveSymbol[] PROGMEM = { 53 | B00000000, 54 | B00000000, 55 | B00000000, 56 | B00000000, 57 | B00011000, 58 | B00011000, 59 | B00000000, 60 | B00000000 61 | }; 62 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nodemcu-as-arduino 2 | Collection of Arduino sketches written for the NodeMCU. Many rely upon external libraries, the links for which can be found below. 3 | 4 | ## Amazon Alexa Interface Sketches 5 | Sketches that enable the NodeMCU to be controlled by voice using an Alexa-powered device. 6 | 7 | ### AlexaWemoSwitch 8 | ![Photo of setup](https://github.com/ckuzma/nodemcu-as-arduino/blob/develop/photos/alexawemo.jpg) 9 | 10 | Transforms the NodeMCU into a virtual WeMo UDP device that can be controlled by Alexa to turn on / off lights. 11 | 12 | ## OLED-based Sketches 13 | These sketches interface with an OLED screen connected via I2C on pins D3 and D4 of the NodeMCU board. (Pins can be changed as desired.) Uses the SSD1306 driver below. 14 | 15 | ### ConwaysGameOfLife 16 | ![Photo of conway sketch on NodeMCU](https://github.com/ckuzma/nodemcu-as-arduino/blob/master/photos/conway.jpg) 17 | 18 | The classic Conway's Game of Life played out on a tiny screen. Set to run 500 cycles per game (50 seconds per game) to avoid a stale board. Cells are set at 4x4 pixels each to keep memory overflows from occurring. 19 | 20 | ### RandomVizualizer 21 | ![Photo of random sketch on NodeMCU](https://github.com/ckuzma/nodemcu-as-arduino/blob/master/photos/random.jpg) 22 | 23 | Blocks are turned on and off randomly, each frame almost a sort-of QR code. It's a noisy visualization similar to an old TV without a signal. 24 | 25 | ### PlaneSpotter 26 | Gives realtime information about airplanes traveling overhead by using the ADS-B Exchange API. 27 | 28 | ### WeatherStation 29 | ![Photo of Weather Station sketch on NodeMCU](https://github.com/ckuzma/nodemcu-as-arduino/blob/master/photos/weatherstation.gif) 30 | 31 | Displays weather information for a location using the Weather Underground API. 32 | 33 | ### WorldClock 34 | ![Photo of World Clock sketch on NodeMCU](https://github.com/ckuzma/nodemcu-as-arduino/blob/master/photos/worldclock.gif) 35 | 36 | Displays the time for cities around the world, along with a small image for a handful of locations. 37 | 38 | ## External libraries: 39 | A lot of my sketches wouldn't have possible without the work of others before me, and the great libraries they put together. Here's a quick reference guide to help find these necessary libraries. 40 | * SSD1306.h, SSD1306Wire.h, OLEDDisplayUi.h - https://github.com/squix78/esp8266-oled-ssd1306 41 | * JsonListener.h - https://github.com/squix78/json-streaming-parser 42 | * AdsbExchangeClient.h, TimeClient.h, WundergroundClient.h - https://github.com/squix78/esp8266-weather-station 43 | * WiFiManager.h - https://github.com/tzapu/WiFiManager 44 | * ArduinoOTA.h, ESP8266WiFi.h, DNSServer.h, ESP8266WebServer.h, WiFiUdp.h - https://github.com/esp8266/Arduino 45 | -------------------------------------------------------------------------------- /Sketches/OLED/RandomVisualizer/RandomVisualizer.ino: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * MIT License * 3 | * * 4 | * Copyright (c) 2016 Christopher Kuzma * 5 | * * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy * 7 | * of this software and associated documentation files (the "Software"), to deal * 8 | * in the Software without restriction, including without limitation the rights * 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * 10 | * copies of the Software, and to permit persons to whom the Software is * 11 | * furnished to do so, subject to the following conditions: * 12 | * * 13 | * The above copyright notice and this permission notice shall be included in all* 14 | * copies or substantial portions of the Software. * 15 | * * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * 22 | * SOFTWARE. * 23 | ********************************************************************************/ 24 | 25 | #include "SSD1306Wire.h" 26 | 27 | // Set where to find the board 28 | SSD1306Wire display(0x3c, D3, D4); // Specify pins display is connected to, might have to change address 29 | 30 | // Set display stuff 31 | const int len = 8; // 128 native pixels / 4 pixels per cell = 32 virtual cells length 32 | const int ht = 4; // 64 native pixels / 4 pixels per cell = 16 virtual cells height 33 | const int pixelSize = 16; // Set how many native pixels = pixels per cell length or width 34 | const bool flipScreen = false; // If you need to flip the screen 35 | 36 | // Initialize the board 37 | int board[len][ht]; 38 | 39 | // Function prototypes 40 | void drawBoard(); 41 | void randomBoard(); 42 | 43 | void setup(){ 44 | // Init the display 45 | display.init(); 46 | if(flipScreen == true){ 47 | display.flipScreenVertically(); 48 | } 49 | 50 | // Display the title 51 | display.clear(); 52 | display.setFont(ArialMT_Plain_10); 53 | display.drawString(40, 15, "Random"); 54 | display.drawString(32, 30, "Visualization"); 55 | display.display(); 56 | delay(2000); 57 | display.clear(); 58 | } 59 | 60 | void loop() { 61 | drawBoard(); 62 | randomBoard(); 63 | delay(100); 64 | } 65 | 66 | void drawBoard(){ 67 | display.clear(); 68 | for(int x=0; x 10) { 38 | return; 39 | } 40 | } 41 | 42 | int pos = 0; 43 | boolean isBody = false; 44 | char c; 45 | 46 | int size = 0; 47 | client.setNoDelay(false); 48 | while(client.connected()) { 49 | while((size = client.available()) > 0) { 50 | c = client.read(); 51 | if (c == '{' || c == '[') { 52 | isBody = true; 53 | } 54 | if (isBody) { 55 | parser.parse(c); 56 | } 57 | } 58 | } 59 | endDocument(); 60 | } 61 | 62 | String AdsbExchangeClient::getFrom() { 63 | if (from[CURRENT].length() >=4) { 64 | int firstComma = from[CURRENT].indexOf(","); 65 | return from[CURRENT].substring(5, firstComma); 66 | } 67 | return ""; 68 | } 69 | String AdsbExchangeClient::getFromIcao() { 70 | if (from[CURRENT].length() >=4) { 71 | return from[CURRENT].substring(0,4); 72 | } 73 | return ""; 74 | } 75 | String AdsbExchangeClient::getTo() { 76 | if (to[CURRENT].length() >=4) { 77 | int firstComma = to[CURRENT].indexOf(","); 78 | return to[CURRENT].substring(5, firstComma); 79 | } 80 | return ""; 81 | } 82 | 83 | String AdsbExchangeClient::getToIcao() { 84 | if (to[CURRENT].length() >=4) { 85 | return to[CURRENT].substring(0,4); 86 | } 87 | return ""; 88 | } 89 | String AdsbExchangeClient::getAltitude(){ 90 | return altitude[CURRENT]; 91 | } 92 | double AdsbExchangeClient::getDistance() { 93 | return distance[CURRENT]; 94 | 95 | } 96 | String AdsbExchangeClient::getAircraftType() { 97 | return aircraftType[CURRENT]; 98 | 99 | } 100 | String AdsbExchangeClient::getOperatorCode() { 101 | return operatorCode[CURRENT]; 102 | } 103 | 104 | double AdsbExchangeClient::getHeading() { 105 | return heading[CURRENT]; 106 | } 107 | 108 | void AdsbExchangeClient::whitespace(char c) { 109 | 110 | } 111 | 112 | void AdsbExchangeClient::startDocument() { 113 | counter = 0; 114 | currentMinDistance = 1000.0; 115 | } 116 | 117 | void AdsbExchangeClient::key(String key) { 118 | currentKey = key; 119 | } 120 | 121 | void AdsbExchangeClient::value(String value) { 122 | /*String from = ""; 123 | String to = ""; 124 | String altitude = ""; 125 | String aircraftType = ""; 126 | String currentKey = ""; 127 | String operator = ""; 128 | 129 | 130 | "Type": "A319", 131 | "Mdl": "Airbus A319 112", 132 | 133 | "From": "LSZH Z\u00c3\u00bcrich, Zurich, Switzerland", 134 | "To": "LEMD Madrid Barajas, Spain", 135 | "Op": "Swiss International Air Lines", 136 | "OpIcao": "SWR", 137 | "Dst": 6.23, 138 | "Year": "1996" 139 | */ 140 | if (currentKey == "Id") { 141 | counter++; 142 | } else if (currentKey == "From") { 143 | from[TEMP] = value; 144 | } else if (currentKey == "To") { 145 | to[TEMP] = value; 146 | } else if (currentKey == "OpIcao") { 147 | operatorCode[TEMP] = value; 148 | } else if (currentKey == "Dst") { 149 | distance[TEMP] = value.toFloat(); 150 | } else if (currentKey == "Mdl") { 151 | aircraftType[TEMP] = value; 152 | } else if (currentKey == "Trak") { 153 | heading[TEMP] = value.toFloat(); 154 | } else if (currentKey == "Alt") { 155 | altitude[TEMP] = value; 156 | } else if (currentKey == "Trt") { 157 | if (distance[TEMP] < currentMinDistance) { 158 | currentMinDistance = distance[TEMP]; 159 | Serial.println("Found a closer aircraft"); 160 | from[CURRENT] = from[TEMP]; 161 | to[CURRENT] = to[TEMP]; 162 | altitude[CURRENT] = altitude[TEMP]; 163 | distance[CURRENT] = distance[TEMP]; 164 | aircraftType[CURRENT] = aircraftType[TEMP]; 165 | operatorCode[CURRENT] = operatorCode[TEMP]; 166 | heading[CURRENT] = heading[TEMP]; 167 | } 168 | } 169 | Serial.println(currentKey + "=" + value); 170 | } 171 | 172 | int AdsbExchangeClient::getNumberOfVisibleAircrafts() { 173 | return counter; 174 | } 175 | 176 | void AdsbExchangeClient::endArray() { 177 | 178 | } 179 | 180 | void AdsbExchangeClient::endObject() { 181 | 182 | } 183 | 184 | void AdsbExchangeClient::endDocument() { 185 | Serial.println("Flights: " + String(counter)); 186 | if (counter == 0 && lastSightingMillis < millis() - MAX_AGE_MILLIS) { 187 | for (int i = 0; i < 2; i++) { 188 | from[i] = ""; 189 | to[i] = ""; 190 | altitude[i] = ""; 191 | distance[i] = 1000.0; 192 | aircraftType[i] = ""; 193 | operatorCode[i] = ""; 194 | heading[i] = 0.0; 195 | } 196 | } else if (counter > 0) { 197 | lastSightingMillis = millis(); 198 | } 199 | } 200 | 201 | boolean AdsbExchangeClient::isAircraftVisible() { 202 | return counter > 0 || lastSightingMillis > millis() - MAX_AGE_MILLIS; 203 | } 204 | 205 | void AdsbExchangeClient::startArray() { 206 | 207 | } 208 | 209 | void AdsbExchangeClient::startObject() { 210 | 211 | } 212 | -------------------------------------------------------------------------------- /Sketches/OLED/WorldClock/WorldClock.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "SSD1306Wire.h" 5 | #include "OLEDDisplayUi.h" 6 | #include "Wire.h" 7 | #include "TimeClient.h" 8 | #include 9 | #include 10 | #include 11 | #include "icons.h" 12 | #include "fonts.h" 13 | 14 | #define HOSTNAME "ESP8266-OTA-" 15 | 16 | // Setup 17 | const int UPDATE_INTERVAL_SECS = 10 * 60; // Update every 10 minutes 18 | 19 | // Display Settings 20 | const int I2C_DISPLAY_ADDRESS = 0x3c; 21 | const int SDA_PIN = D3; 22 | const int SDC_PIN = D4; 23 | 24 | // TimeClient settings 25 | const float UTC_OFFSET = 0; 26 | 27 | TimeClient timeClient(UTC_OFFSET); 28 | 29 | // Initialize the oled display for address 0x3c / sda-pin=14 and sdc-pin=12 30 | SSD1306Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN); 31 | OLEDDisplayUi ui ( &display ); 32 | 33 | 34 | // flag changed in the ticker function every 10 minutes 35 | bool readyForUpdate = false; 36 | 37 | String lastUpdate = "--"; 38 | 39 | Ticker ticker; 40 | 41 | 42 | void updateData(OLEDDisplay *display) { 43 | drawProgress(display, 50, "Updating Time..."); 44 | timeClient.updateTime(); 45 | drawProgress(display, 100, "Done..."); 46 | readyForUpdate = false; 47 | delay(1000); 48 | } 49 | 50 | void drawProgress(OLEDDisplay *display, int percentage, String label) { 51 | display->clear(); 52 | display->setTextAlignment(TEXT_ALIGN_CENTER); 53 | display->setFont(ArialMT_Plain_10); 54 | display->drawString(64, 10, label); 55 | display->drawProgressBar(10, 28, 108, 12, percentage); 56 | display->display(); 57 | } 58 | 59 | void drawClock(OLEDDisplay *display, int x, int y, int timeZoneIndex, String city, const char* icon) { 60 | display->setTextAlignment(TEXT_ALIGN_LEFT); 61 | display->setFont(ArialMT_Plain_10); 62 | display->drawString(x + 60, y + 5, city); 63 | display->setFont(Crushed_Plain_36); 64 | display->drawXbm(x, y, 60, 60, icon); 65 | String time = timeClient.getHoursOffset(timeZoneIndex) + ":" + timeClient.getMinutes(); 66 | display->drawString(x + 60, y + 15, time); 67 | 68 | } 69 | 70 | void drawFrame1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 71 | drawClock(display, x, y, 9, "Tokyo", tokyo_bits); 72 | } 73 | 74 | void drawFrame2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 75 | drawClock(display, x, y, 1, "Berlin", berlin_bits); 76 | } 77 | 78 | void drawFrame3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 79 | drawClock(display, x, y, -4, "New York", new_york_bits); 80 | } 81 | 82 | void drawFrame4(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 83 | drawClock(display, x, y, -5, "Austin", austin_bits); 84 | } 85 | 86 | 87 | void setReadyForWeatherUpdate() { 88 | Serial.println("Setting readyForUpdate to true"); 89 | readyForUpdate = true; 90 | } 91 | 92 | // this array keeps function pointers to all frames 93 | // frames are the single views that slide from right to left 94 | FrameCallback frames[] = { drawFrame1, drawFrame2, drawFrame3, drawFrame4}; 95 | int numberOfFrames = 4; 96 | 97 | void setup() { 98 | Serial.begin(115200); 99 | Serial.println(); 100 | Serial.println(); 101 | 102 | // initialize dispaly 103 | display.init(); 104 | display.clear(); 105 | display.display(); 106 | 107 | //display.flipScreenVertically(); 108 | display.setFont(ArialMT_Plain_10); 109 | display.setTextAlignment(TEXT_ALIGN_CENTER); 110 | display.setContrast(255); 111 | 112 | //WiFiManager 113 | //Local intialization. Once its business is done, there is no need to keep it around 114 | WiFiManager wifiManager; 115 | // Uncomment for testing wifi manager 116 | //wifiManager.resetSettings(); 117 | wifiManager.setAPCallback(configModeCallback); 118 | 119 | //or use this for auto generated name ESP + ChipID 120 | wifiManager.autoConnect(); 121 | 122 | //Manual Wifi 123 | //WiFi.begin(WIFI_SSID, WIFI_PWD); 124 | String hostname(HOSTNAME); 125 | hostname += String(ESP.getChipId(), HEX); 126 | WiFi.hostname(hostname); 127 | 128 | int counter = 0; 129 | while (WiFi.status() != WL_CONNECTED) { 130 | delay(500); 131 | Serial.print("."); 132 | display.clear(); 133 | display.drawString(64, 10, "Connecting to WiFi"); 134 | display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbol : inactiveSymbol); 135 | display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbol : inactiveSymbol); 136 | display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbol : inactiveSymbol); 137 | display.display(); 138 | 139 | counter++; 140 | } 141 | 142 | ui.setTargetFPS(30); 143 | 144 | // You can change this to 145 | // TOP, LEFT, BOTTOM, RIGHT 146 | ui.setIndicatorPosition(BOTTOM); 147 | 148 | // Defines where the first frame is located in the bar. 149 | ui.setIndicatorDirection(LEFT_RIGHT); 150 | 151 | // You can change the transition that is used 152 | // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN 153 | ui.setFrameAnimation(SLIDE_LEFT); 154 | 155 | // Add frames 156 | ui.setFrames(frames, numberOfFrames); 157 | 158 | // Inital UI takes care of initalising the display too. 159 | ui.init(); 160 | 161 | Serial.println(""); 162 | 163 | updateData(&display); 164 | 165 | ticker.attach(UPDATE_INTERVAL_SECS, setReadyForWeatherUpdate); 166 | 167 | } 168 | 169 | void loop() { 170 | 171 | if (readyForUpdate && ui.getUiState()->frameState == FIXED) { 172 | updateData(&display); 173 | } 174 | 175 | int remainingTimeBudget = ui.update(); 176 | 177 | if (remainingTimeBudget > 0) { 178 | // You can do some work here 179 | // Don't do stuff if you are below your 180 | // time budget. 181 | delay(remainingTimeBudget); 182 | } 183 | 184 | } 185 | 186 | void configModeCallback (WiFiManager *myWiFiManager) { 187 | Serial.println("Entered config mode"); 188 | Serial.println(WiFi.softAPIP()); 189 | //if you used auto generated SSID, print it 190 | Serial.println(myWiFiManager->getConfigPortalSSID()); 191 | display.clear(); 192 | display.setTextAlignment(TEXT_ALIGN_CENTER); 193 | display.setFont(ArialMT_Plain_10); 194 | display.drawString(64, 10, "Wifi Manager"); 195 | display.drawString(64, 20, "Please connect to AP"); 196 | display.drawString(64, 30, myWiFiManager->getConfigPortalSSID()); 197 | display.drawString(64, 40, "To setup Wifi Configuration"); 198 | display.display(); 199 | } 200 | -------------------------------------------------------------------------------- /Sketches/OLED/RandomVisualizer/SSD1306Wire.h: -------------------------------------------------------------------------------- 1 | /** 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2018 by ThingPulse, Daniel Eichhorn 5 | * Copyright (c) 2018 by Fabrice Weinberg 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | * 25 | * ThingPulse invests considerable time and money to develop these open source libraries. 26 | * Please support us by buying our products (and not the clones) from 27 | * https://thingpulse.com 28 | * 29 | */ 30 | 31 | #ifndef SSD1306Wire_h 32 | #define SSD1306Wire_h 33 | 34 | #include "OLEDDisplay.h" 35 | #include 36 | #include 37 | 38 | #if defined(ARDUINO_ARCH_AVR) || defined(ARDUINO_ARCH_STM32) 39 | #define _min min 40 | #define _max max 41 | #endif 42 | #if defined(ARDUINO_ARCH_ESP32) 43 | #define I2C_MAX_TRANSFER_BYTE 128 /** ESP32 can Transfer 128 bytes */ 44 | #else 45 | #define I2C_MAX_TRANSFER_BYTE 17 46 | #endif 47 | //-------------------------------------- 48 | 49 | class SSD1306Wire : public OLEDDisplay { 50 | private: 51 | uint8_t _address; 52 | int _sda; 53 | int _scl; 54 | bool _doI2cAutoInit = false; 55 | TwoWire* _wire = NULL; 56 | int _frequency; 57 | 58 | public: 59 | 60 | /** 61 | * Create and initialize the Display using Wire library 62 | * 63 | * Beware for retro-compatibility default values are provided for all parameters see below. 64 | * Please note that if you don't wan't SD1306Wire to initialize and change frequency speed ot need to 65 | * ensure -1 value are specified for all 3 parameters. This can be usefull to control TwoWire with multiple 66 | * device on the same bus. 67 | * 68 | * @param _address I2C Display address 69 | * @param _sda I2C SDA pin number, default to -1 to skip Wire begin call 70 | * @param _scl I2C SCL pin number, default to -1 (only SDA = -1 is considered to skip Wire begin call) 71 | * @param g display geometry dafault to generic GEOMETRY_128_64, see OLEDDISPLAY_GEOMETRY definition for other options 72 | * @param _i2cBus on ESP32 with 2 I2C HW buses, I2C_ONE for 1st Bus, I2C_TWO fot 2nd bus, default I2C_ONE 73 | * @param _frequency for Frequency by default Let's use ~700khz if ESP8266 is in 160Mhz mode, this will be limited to ~400khz if the ESP8266 in 80Mhz mode 74 | */ 75 | SSD1306Wire(uint8_t _address, int _sda = -1, int _scl = -1, OLEDDISPLAY_GEOMETRY g = GEOMETRY_128_64, HW_I2C _i2cBus = I2C_ONE, int _frequency = 700000) { 76 | setGeometry(g); 77 | 78 | this->_address = _address; 79 | this->_sda = _sda; 80 | this->_scl = _scl; 81 | #if !defined(ARDUINO_ARCH_ESP32) 82 | this->_wire = &Wire; 83 | #else 84 | this->_wire = (_i2cBus==I2C_ONE) ? &Wire : &Wire1; 85 | #endif 86 | this->_frequency = _frequency; 87 | } 88 | 89 | bool connect() { 90 | #if !defined(ARDUINO_ARCH_ESP32) && !defined(ARDUINO_ARCH_ESP8266) 91 | _wire->begin(); 92 | #else 93 | // On ESP32 arduino, -1 means 'don't change pins', someone else has called begin for us. 94 | if(this->_sda != -1) 95 | _wire->begin(this->_sda, this->_scl); 96 | #endif 97 | // Let's use ~700khz if ESP8266 is in 160Mhz mode 98 | // this will be limited to ~400khz if the ESP8266 in 80Mhz mode. 99 | if(this->_frequency != -1) 100 | _wire->setClock(this->_frequency); 101 | return true; 102 | } 103 | 104 | void display(void) { 105 | initI2cIfNeccesary(); 106 | const int x_offset = (128 - this->width()) / 2; 107 | #ifdef OLEDDISPLAY_DOUBLE_BUFFER 108 | uint8_t minBoundY = UINT8_MAX; 109 | uint8_t maxBoundY = 0; 110 | 111 | uint8_t minBoundX = UINT8_MAX; 112 | uint8_t maxBoundX = 0; 113 | uint8_t x, y; 114 | 115 | // Calculate the Y bounding box of changes 116 | // and copy buffer[pos] to buffer_back[pos]; 117 | for (y = 0; y < (this->height() / 8); y++) { 118 | for (x = 0; x < this->width(); x++) { 119 | uint16_t pos = x + y * this->width(); 120 | if (buffer[pos] != buffer_back[pos]) { 121 | minBoundY = std::min(minBoundY, y); 122 | maxBoundY = std::max(maxBoundY, y); 123 | minBoundX = std::min(minBoundX, x); 124 | maxBoundX = std::max(maxBoundX, x); 125 | } 126 | buffer_back[pos] = buffer[pos]; 127 | } 128 | yield(); 129 | } 130 | 131 | // If the minBoundY wasn't updated 132 | // we can savely assume that buffer_back[pos] == buffer[pos] 133 | // holdes true for all values of pos 134 | 135 | if (minBoundY == UINT8_MAX) return; 136 | 137 | sendCommand(COLUMNADDR); 138 | sendCommand(x_offset + minBoundX); 139 | sendCommand(x_offset + maxBoundX); 140 | 141 | sendCommand(PAGEADDR); 142 | sendCommand(minBoundY); 143 | sendCommand(maxBoundY); 144 | 145 | uint8_t k = 0; 146 | for (y = minBoundY; y <= maxBoundY; y++) { 147 | for (x = minBoundX; x <= maxBoundX; x++) { 148 | if (k == 0) { 149 | _wire->beginTransmission(_address); 150 | _wire->write(0x40); 151 | } 152 | 153 | _wire->write(buffer[x + y * this->width()]); 154 | k++; 155 | if (k == (I2C_MAX_TRANSFER_BYTE - 1)) { 156 | _wire->endTransmission(); 157 | k = 0; 158 | } 159 | } 160 | yield(); 161 | } 162 | 163 | if (k != 0) { 164 | _wire->endTransmission(); 165 | } 166 | #else 167 | 168 | sendCommand(COLUMNADDR); 169 | sendCommand(x_offset); 170 | sendCommand(x_offset + (this->width() - 1)); 171 | 172 | sendCommand(PAGEADDR); 173 | sendCommand(0x0); 174 | 175 | for (uint16_t i=0; i < displayBufferSize; i++) { 176 | _wire->beginTransmission(this->_address); 177 | _wire->write(0x40); 178 | for (uint8_t x = 0; x < (I2C_MAX_TRANSFER_BYTE - 1); x++) { 179 | _wire->write(buffer[i]); 180 | i++; 181 | } 182 | i--; 183 | _wire->endTransmission(); 184 | } 185 | #endif 186 | } 187 | 188 | void setI2cAutoInit(bool doI2cAutoInit) { 189 | _doI2cAutoInit = doI2cAutoInit; 190 | } 191 | 192 | private: 193 | int getBufferOffset(void) { 194 | return 0; 195 | } 196 | inline void sendCommand(uint8_t command) __attribute__((always_inline)){ 197 | initI2cIfNeccesary(); 198 | _wire->beginTransmission(_address); 199 | _wire->write(0x80); 200 | _wire->write(command); 201 | _wire->endTransmission(); 202 | } 203 | 204 | void initI2cIfNeccesary() { 205 | if (_doI2cAutoInit) { 206 | #if !defined(ARDUINO_ARCH_ESP32) && !defined(ARDUINO_ARCH_ESP8266) 207 | _wire->begin(); 208 | #else 209 | _wire->begin(this->_sda, this->_scl); 210 | #endif 211 | } 212 | } 213 | 214 | }; 215 | 216 | #endif -------------------------------------------------------------------------------- /Sketches/LED Board/led_board/led_board.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | // Some UDP / WeMo specific variables: 10 | String device_name = "pixel board"; // Name of device 11 | float power = true; // Pin to toggle 12 | WiFiUDP UDP; 13 | IPAddress ipMulti(239, 255, 255, 250); 14 | unsigned int portMulti = 1900; // local port to listen on 15 | ESP8266WebServer HTTP(80); 16 | String serial; // Where we save the string of the UUID 17 | String persistent_uuid; // Where we save some socket info with the UUID 18 | 19 | // Buffer to save incoming packets: 20 | char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; 21 | 22 | // Define the connections and instantiate the NeoPixels 23 | #define PIN1 D5 24 | #define PIN2 D6 25 | Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(50, PIN1, NEO_GRB + NEO_KHZ800); 26 | Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(50, PIN2, NEO_GRB + NEO_KHZ800); 27 | 28 | // Define the size of the arrays 29 | int top[5][10][3]; 30 | int bottom[5][10][3]; 31 | 32 | // Variables to store time counts 33 | int lightTimer = 0; 34 | int webTimer = 0; 35 | 36 | void setup() { 37 | // Set the UUIDs and socket information: 38 | prepareIds(); 39 | 40 | // Get settings from WiFi Manager: 41 | WiFiManager wifiManager; 42 | // wifiManager.resetSettings(); // Uncomment this to test WiFi Manager function 43 | wifiManager.setAPCallback(configModeCallback); 44 | wifiManager.autoConnect(); 45 | 46 | // Connect to UDP: 47 | bool udpConnected = connectUDP(); 48 | if (udpConnected){ 49 | startHttpServer(); // Start the HTTP Server 50 | } 51 | 52 | // Initialize the display 53 | strip1.begin(); 54 | strip2.begin(); 55 | 56 | // Initialize the random seed 57 | randomSeed(1989); 58 | } 59 | 60 | void loop() { 61 | if (lightTimer == 0) { 62 | lightTimer = millis(); 63 | } 64 | if (millis() - lightTimer >= 500) { 65 | randomFill(power); 66 | displayBoard1(); 67 | displayBoard2(); 68 | lightTimer = 0; 69 | } 70 | HTTP.handleClient(); 71 | if (webTimer == 0) { 72 | webTimer = millis(); 73 | } 74 | if (millis() - webTimer >= 1) { 75 | // If there are packets, we parse them: 76 | int packetSize = UDP.parsePacket(); 77 | if(packetSize) { 78 | int len = UDP.read(packetBuffer, 255); 79 | if (len > 0) { 80 | packetBuffer[len] = 0; 81 | } 82 | String request = packetBuffer; 83 | if(request.indexOf('M-SEARCH') > 0) { 84 | if(request.indexOf("urn:Belkin:device:**") > 0) { 85 | respondToSearch(); 86 | } 87 | } 88 | } 89 | webTimer = 0; 90 | } 91 | } 92 | 93 | void randomFill(bool fill) { 94 | for(int x=0; x<5; x++){ 95 | for(int y=0; y < 10; y++){ 96 | for(int z=0; z<3; z++){ 97 | if(fill == true){ 98 | top[x][y][z] = random(3); 99 | bottom[x][y][z] = random(3); 100 | } 101 | else { 102 | top[x][y][z] = 0; 103 | bottom[x][y][z] = 0; 104 | } 105 | } 106 | } 107 | } 108 | } 109 | 110 | void displayBoard1() { 111 | for(int x=0; x<5; x++){ 112 | for(int y=0; y < 10; y++){ 113 | strip1.setPixelColor(x*10 + y, strip1.Color(top[x][y][0], top[x][y][1], top[x][y][2])); 114 | } 115 | } 116 | strip1.show(); 117 | } 118 | 119 | void displayBoard2() { 120 | for(int x=0; x<5; x++){ 121 | for(int y=0; y < 10; y++){ 122 | strip2.setPixelColor(x*10 + y, strip2.Color(top[x][y][0], bottom[x][y][1], bottom[x][y][2])); 123 | } 124 | } 125 | strip2.show(); 126 | } 127 | 128 | void prepareIds() { 129 | uint32_t chipId = ESP.getChipId(); 130 | char uuid[64]; 131 | sprintf_P(uuid, PSTR("38323636-4558-4dda-9188-cda0e6%02x%02x%02x"), 132 | (uint16_t) ((chipId >> 16) & 0xff), 133 | (uint16_t) ((chipId >> 8) & 0xff), 134 | (uint16_t) chipId & 0xff); 135 | 136 | serial = String(uuid); 137 | persistent_uuid = "Socket-1_0-" + serial; 138 | } 139 | 140 | bool connectUDP(){ 141 | boolean state = false; 142 | 143 | if(UDP.beginMulticast(WiFi.localIP(), ipMulti, portMulti)) { 144 | state = true; 145 | } 146 | 147 | return state; 148 | } 149 | 150 | void startHttpServer() { 151 | HTTP.on("/index.html", HTTP_GET, [](){ 152 | HTTP.send(200, "text/plain", "Hello World!"); 153 | }); 154 | 155 | HTTP.on("/upnp/control/basicevent1", HTTP_POST, []() { 156 | String request = HTTP.arg(0); 157 | if(request.indexOf("1") > 0) { 158 | power = true; 159 | } 160 | if(request.indexOf("0") > 0) { 161 | power = false; 162 | } 163 | HTTP.send(200, "text/plain", ""); 164 | }); 165 | 166 | HTTP.on("/eventservice.xml", HTTP_GET, [](){ 167 | String eventservice_xml = "" 168 | "" 169 | "" 170 | "SetBinaryState" 171 | "" 172 | "" 173 | "" 174 | "BinaryState" 175 | "BinaryState" 176 | "in" 177 | "" 178 | "" 179 | "" 180 | "" 181 | "BinaryState" 182 | "Boolean" 183 | "0" 184 | "" 185 | "" 186 | "level" 187 | "string" 188 | "0" 189 | "" 190 | "" 191 | "" 192 | "\r\n" 193 | "\r\n"; 194 | 195 | HTTP.send(200, "text/plain", eventservice_xml.c_str()); 196 | }); 197 | 198 | HTTP.on("/setup.xml", HTTP_GET, [](){ 199 | IPAddress localIP = WiFi.localIP(); 200 | char s[16]; 201 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 202 | 203 | String setup_xml = "" 204 | "" 205 | "" 206 | "urn:Belkin:device:controllee:1" 207 | ""+ device_name +"" 208 | "Belkin International Inc." 209 | "Emulated Socket" 210 | "3.1415" 211 | "uuid:"+ persistent_uuid +"" 212 | "221517K0101769" 213 | "0" 214 | "" 215 | "" 216 | "urn:Belkin:service:basicevent:1" 217 | "urn:Belkin:serviceId:basicevent1" 218 | "/upnp/control/basicevent1" 219 | "/upnp/event/basicevent1" 220 | "/eventservice.xml" 221 | "" 222 | "" 223 | "" 224 | "\r\n" 225 | "\r\n"; 226 | 227 | HTTP.send(200, "text/xml", setup_xml.c_str()); 228 | }); 229 | 230 | HTTP.begin(); 231 | } 232 | 233 | void respondToSearch() { 234 | IPAddress localIP = WiFi.localIP(); 235 | char s[16]; 236 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 237 | 238 | String response = 239 | "HTTP/1.1 200 OK\r\n" 240 | "CACHE-CONTROL: max-age=86400\r\n" 241 | "DATE: Wed, 8 Feb 2017 02:30:00 GMT\r\n" 242 | "EXT:\r\n" 243 | "LOCATION: http://" + String(s) + ":80/setup.xml\r\n" 244 | "OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n" 245 | "01-NLS: b9200ebb-736d-4b93-bf03-835149d13983\r\n" 246 | "SERVER: Unspecified, UPnP/1.0, Unspecified\r\n" 247 | "ST: urn:Belkin:device:**\r\n" 248 | "USN: uuid:" + persistent_uuid + "::urn:Belkin:device:**\r\n" 249 | "X-User-Agent: redsonic\r\n\r\n"; 250 | 251 | UDP.beginPacket(UDP.remoteIP(), UDP.remotePort()); 252 | UDP.write(response.c_str()); 253 | UDP.endPacket(); 254 | } 255 | 256 | void configModeCallback(WiFiManager *myWiFiManager) { 257 | WiFi.softAPIP(); 258 | myWiFiManager->getConfigPortalSSID(); 259 | } 260 | -------------------------------------------------------------------------------- /Sketches/Alexa/AlexaWemoSwitch/AlexaWemoSwitch.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | // Declare function prototypes 9 | bool connectUDP(); 10 | void prepareIds(); 11 | void respondToSearch(); 12 | void startHttpServer(); 13 | 14 | // Change these to whatever you'd prefer: 15 | String device_name = "christmas lights"; // Name of device 16 | int relayPin = D1; // Pin to toggle 17 | bool debug = false; // If you want debug messages 18 | bool squawk = true; // For on/off messages 19 | 20 | // Some UDP / WeMo specific variables: 21 | WiFiUDP UDP; 22 | IPAddress ipMulti(239, 255, 255, 250); 23 | unsigned int portMulti = 1900; // local port to listen on 24 | ESP8266WebServer HTTP(80); 25 | String serial; // Where we save the string of the UUID 26 | String persistent_uuid; // Where we save some socket info with the UUID 27 | 28 | // Buffer to save incoming packets: 29 | char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; 30 | 31 | void setup() { 32 | // Begin Serial: 33 | Serial.begin(115200); 34 | 35 | // Setup the pin for output: 36 | pinMode(relayPin, OUTPUT); 37 | digitalWrite(relayPin, HIGH); // Start with light on 38 | // digitalWrite(relayPin, LOW); // Start with light off 39 | 40 | // Set the UUIDs and socket information: 41 | prepareIds(); 42 | 43 | // Get settings from WiFi Manager: 44 | WiFiManager wifiManager; 45 | // wifiManager.resetSettings(); // Uncomment this to test WiFi Manager function 46 | wifiManager.setAPCallback(configModeCallback); 47 | wifiManager.autoConnect(); 48 | 49 | // Wait til WiFi is connected properly: 50 | int counter = 0; 51 | while (WiFi.status() != WL_CONNECTED) { 52 | delay(500); 53 | Serial.print("."); 54 | counter++; 55 | } 56 | Serial.println("Connected to WiFi"); 57 | 58 | // Connect to UDP: 59 | bool udpConnected = connectUDP(); 60 | if (udpConnected){ 61 | startHttpServer(); // Start the HTTP Server 62 | } 63 | 64 | } 65 | 66 | void loop() { 67 | HTTP.handleClient(); 68 | delay(1); 69 | 70 | // If there are packets, we parse them: 71 | int packetSize = UDP.parsePacket(); 72 | 73 | if(packetSize) { 74 | if (debug) { 75 | Serial.println(""); 76 | Serial.print("Received packet of size "); 77 | Serial.println(packetSize); 78 | Serial.print("From "); 79 | IPAddress remote = UDP.remoteIP(); 80 | 81 | for (int i =0; i < 4; i++) { 82 | Serial.print(remote[i], DEC); 83 | if (i < 3) { 84 | Serial.print("."); 85 | } 86 | } 87 | 88 | Serial.print(", port "); 89 | Serial.println(UDP.remotePort()); 90 | } 91 | 92 | int len = UDP.read(packetBuffer, 255); 93 | 94 | if (len > 0) { 95 | packetBuffer[len] = 0; 96 | } 97 | 98 | String request = packetBuffer; 99 | 100 | if(request.indexOf('M-SEARCH') > 0) { 101 | if(request.indexOf("urn:Belkin:device:**") > 0) { 102 | if (debug) { 103 | Serial.println("Responding to search request ..."); 104 | } 105 | respondToSearch(); 106 | } 107 | } 108 | } 109 | 110 | delay(10); 111 | } 112 | 113 | void prepareIds() { 114 | uint32_t chipId = ESP.getChipId(); 115 | char uuid[64]; 116 | sprintf_P(uuid, PSTR("38323636-4558-4dda-9188-cda0e6%02x%02x%02x"), 117 | (uint16_t) ((chipId >> 16) & 0xff), 118 | (uint16_t) ((chipId >> 8) & 0xff), 119 | (uint16_t) chipId & 0xff); 120 | 121 | serial = String(uuid); 122 | persistent_uuid = "Socket-1_0-" + serial; 123 | } 124 | 125 | bool connectUDP(){ 126 | boolean state = false; 127 | Serial.println("Connecting to UDP"); 128 | 129 | if(UDP.beginMulticast(WiFi.localIP(), ipMulti, portMulti)) { 130 | Serial.println("Connection successful"); 131 | state = true; 132 | } 133 | else{ 134 | Serial.println("Connection failed"); 135 | } 136 | 137 | return state; 138 | } 139 | 140 | void startHttpServer() { 141 | HTTP.on("/index.html", HTTP_GET, [](){ 142 | if (debug) { 143 | Serial.println("Got Request index.html ...\n"); 144 | } 145 | HTTP.send(200, "text/plain", "Hello World!"); 146 | }); 147 | 148 | HTTP.on("/upnp/control/basicevent1", HTTP_POST, []() { 149 | if (debug) { 150 | Serial.println("########## Responding to /upnp/control/basicevent1 ... ##########"); 151 | } 152 | 153 | 154 | //for (int x=0; x <= HTTP.args(); x++) { 155 | // Serial.println(HTTP.arg(x)); 156 | //} 157 | 158 | String request = HTTP.arg(0); 159 | if (debug) { 160 | Serial.print("request:"); 161 | Serial.println(request); 162 | } 163 | 164 | 165 | if(request.indexOf("1") > 0) { 166 | if (squawk) { 167 | Serial.println("Got on request"); 168 | } 169 | 170 | digitalWrite(relayPin, HIGH); // turn on relay with voltage HIGH 171 | } 172 | 173 | if(request.indexOf("0") > 0) { 174 | if (squawk) { 175 | Serial.println("Got off request"); 176 | } 177 | 178 | digitalWrite(relayPin, LOW); // turn on relay with voltage LOW 179 | } 180 | 181 | HTTP.send(200, "text/plain", ""); 182 | }); 183 | 184 | HTTP.on("/eventservice.xml", HTTP_GET, [](){ 185 | if (debug) { 186 | Serial.println(" ########## Responding to eventservice.xml ... ########\n"); 187 | } 188 | 189 | String eventservice_xml = "" 190 | "" 191 | "" 192 | "SetBinaryState" 193 | "" 194 | "" 195 | "" 196 | "BinaryState" 197 | "BinaryState" 198 | "in" 199 | "" 200 | "" 201 | "" 202 | "" 203 | "BinaryState" 204 | "Boolean" 205 | "0" 206 | "" 207 | "" 208 | "level" 209 | "string" 210 | "0" 211 | "" 212 | "" 213 | "" 214 | "\r\n" 215 | "\r\n"; 216 | 217 | HTTP.send(200, "text/plain", eventservice_xml.c_str()); 218 | }); 219 | 220 | HTTP.on("/setup.xml", HTTP_GET, [](){ 221 | if (debug) { 222 | Serial.println(" ########## Responding to setup.xml ... ########\n"); 223 | } 224 | 225 | 226 | IPAddress localIP = WiFi.localIP(); 227 | char s[16]; 228 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 229 | 230 | String setup_xml = "" 231 | "" 232 | "" 233 | "urn:Belkin:device:controllee:1" 234 | ""+ device_name +"" 235 | "Belkin International Inc." 236 | "Emulated Socket" 237 | "3.1415" 238 | "uuid:"+ persistent_uuid +"" 239 | "221517K0101769" 240 | "0" 241 | "" 242 | "" 243 | "urn:Belkin:service:basicevent:1" 244 | "urn:Belkin:serviceId:basicevent1" 245 | "/upnp/control/basicevent1" 246 | "/upnp/event/basicevent1" 247 | "/eventservice.xml" 248 | "" 249 | "" 250 | "" 251 | "\r\n" 252 | "\r\n"; 253 | 254 | HTTP.send(200, "text/xml", setup_xml.c_str()); 255 | if (debug) { 256 | Serial.print("Sending :"); 257 | Serial.println(setup_xml); 258 | } 259 | }); 260 | 261 | HTTP.begin(); 262 | if (debug) { 263 | Serial.println("HTTP Server started .."); 264 | } 265 | } 266 | 267 | void respondToSearch() { 268 | if (debug) { 269 | Serial.println(""); 270 | Serial.print("Sending response to "); 271 | Serial.println(UDP.remoteIP()); 272 | Serial.print("Port : "); 273 | Serial.println(UDP.remotePort()); 274 | } 275 | 276 | IPAddress localIP = WiFi.localIP(); 277 | char s[16]; 278 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 279 | 280 | String response = 281 | "HTTP/1.1 200 OK\r\n" 282 | "CACHE-CONTROL: max-age=86400\r\n" 283 | "DATE: Tue, 14 Dec 2016 02:30:00 GMT\r\n" 284 | "EXT:\r\n" 285 | "LOCATION: http://" + String(s) + ":80/setup.xml\r\n" 286 | "OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n" 287 | "01-NLS: b9200ebb-736d-4b93-bf03-835149d13983\r\n" 288 | "SERVER: Unspecified, UPnP/1.0, Unspecified\r\n" 289 | "ST: urn:Belkin:device:**\r\n" 290 | "USN: uuid:" + persistent_uuid + "::urn:Belkin:device:**\r\n" 291 | "X-User-Agent: redsonic\r\n\r\n"; 292 | 293 | UDP.beginPacket(UDP.remoteIP(), UDP.remotePort()); 294 | UDP.write(response.c_str()); 295 | UDP.endPacket(); 296 | if (debug) { 297 | Serial.println("Response sent !"); 298 | } 299 | } 300 | 301 | void configModeCallback(WiFiManager *myWiFiManager) { 302 | Serial.println("Entered config mode"); 303 | Serial.println("Soft AP's IP Address:"); 304 | Serial.println(WiFi.softAPIP()); 305 | Serial.println("WiFi Manager: Please connect to AP:"); 306 | Serial.println(myWiFiManager->getConfigPortalSSID()); 307 | Serial.println("To setup WiFi Configuration"); 308 | } 309 | -------------------------------------------------------------------------------- /Sketches/Alexa/AlexaWemoSwitchMulti/AlexaWemoSwitchMulti.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | // Declare function prototypes 9 | bool connectUDP(); 10 | void prepareIds(); 11 | void respondToSearch(); 12 | void startHttpServer(); 13 | 14 | // Change these to whatever you'd prefer: 15 | String device_name = "desk lamp"; // Name of device 16 | bool debug = false; // If you want debug messages 17 | bool squawk = true; // For on/off messages 18 | 19 | // Some UDP / WeMo specific variables: 20 | WiFiUDP UDP; 21 | IPAddress ipMulti(239, 255, 255, 250); 22 | unsigned int portMulti = 1900; // local port to listen on 23 | ESP8266WebServer HTTP(80); 24 | String serial; // Where we save the string of the UUID 25 | String persistent_uuid; // Where we save some socket info with the UUID 26 | 27 | // Buffer to save incoming packets: 28 | char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; 29 | 30 | void setup() { 31 | // Begin Serial: 32 | Serial.begin(115200); 33 | 34 | // Setup the pin for output: 35 | pinMode(D1, OUTPUT); 36 | pinMode(D2, OUTPUT); 37 | pinMode(D3, OUTPUT); 38 | pinMode(D4, OUTPUT); 39 | digitalWrite(D1, LOW); // Start with light off 40 | digitalWrite(D2, LOW); // Start with light off 41 | digitalWrite(D3, LOW); // Start with light off 42 | digitalWrite(D4, LOW); // Start with light off 43 | 44 | // Set the UUIDs and socket information: 45 | prepareIds(); 46 | 47 | // Get settings from WiFi Manager: 48 | WiFiManager wifiManager; 49 | // wifiManager.resetSettings(); // Uncomment this to test WiFi Manager function 50 | wifiManager.setAPCallback(configModeCallback); 51 | wifiManager.autoConnect(); 52 | 53 | // Wait til WiFi is connected properly: 54 | int counter = 0; 55 | while (WiFi.status() != WL_CONNECTED) { 56 | delay(500); 57 | Serial.print("."); 58 | counter++; 59 | } 60 | Serial.println("Connected to WiFi"); 61 | 62 | // Connect to UDP: 63 | bool udpConnected = connectUDP(); 64 | if (udpConnected){ 65 | startHttpServer(); // Start the HTTP Server 66 | } 67 | 68 | } 69 | 70 | void loop() { 71 | HTTP.handleClient(); 72 | delay(1); 73 | 74 | // If there are packets, we parse them: 75 | int packetSize = UDP.parsePacket(); 76 | 77 | if(packetSize) { 78 | if (debug) { 79 | Serial.println(""); 80 | Serial.print("Received packet of size "); 81 | Serial.println(packetSize); 82 | Serial.print("From "); 83 | IPAddress remote = UDP.remoteIP(); 84 | 85 | for (int i =0; i < 4; i++) { 86 | Serial.print(remote[i], DEC); 87 | if (i < 3) { 88 | Serial.print("."); 89 | } 90 | } 91 | 92 | Serial.print(", port "); 93 | Serial.println(UDP.remotePort()); 94 | } 95 | 96 | int len = UDP.read(packetBuffer, 255); 97 | 98 | if (len > 0) { 99 | packetBuffer[len] = 0; 100 | } 101 | 102 | String request = packetBuffer; 103 | 104 | if(request.indexOf('M-SEARCH') > 0) { 105 | if(request.indexOf("urn:Belkin:device:**") > 0) { 106 | if (debug) { 107 | Serial.println("Responding to search request ..."); 108 | } 109 | respondToSearch(); 110 | } 111 | } 112 | } 113 | 114 | delay(10); 115 | } 116 | 117 | void prepareIds() { 118 | uint32_t chipId = ESP.getChipId(); 119 | char uuid[64]; 120 | sprintf_P(uuid, PSTR("38323636-4558-4dda-9188-cda0e6%02x%02x%02x"), 121 | (uint16_t) ((chipId >> 16) & 0xff), 122 | (uint16_t) ((chipId >> 8) & 0xff), 123 | (uint16_t) chipId & 0xff); 124 | 125 | serial = String(uuid); 126 | persistent_uuid = "Socket-1_0-" + serial; 127 | } 128 | 129 | bool connectUDP(){ 130 | boolean state = false; 131 | Serial.println("Connecting to UDP"); 132 | 133 | if(UDP.beginMulticast(WiFi.localIP(), ipMulti, portMulti)) { 134 | Serial.println("Connection successful"); 135 | state = true; 136 | } 137 | else{ 138 | Serial.println("Connection failed"); 139 | } 140 | 141 | return state; 142 | } 143 | 144 | void startHttpServer() { 145 | HTTP.on("/index.html", HTTP_GET, [](){ 146 | if (debug) { 147 | Serial.println("Got Request index.html ...\n"); 148 | } 149 | HTTP.send(200, "text/plain", "Hello World!"); 150 | }); 151 | 152 | HTTP.on("/upnp/control/basicevent1", HTTP_POST, []() { 153 | if (debug) { 154 | Serial.println("########## Responding to /upnp/control/basicevent1 ... ##########"); 155 | } 156 | 157 | 158 | //for (int x=0; x <= HTTP.args(); x++) { 159 | // Serial.println(HTTP.arg(x)); 160 | //} 161 | 162 | String request = HTTP.arg(0); 163 | if (debug) { 164 | Serial.print("request:"); 165 | Serial.println(request); 166 | } 167 | 168 | 169 | if(request.indexOf("1") > 0) { 170 | if (squawk) { 171 | Serial.println("Got on request"); 172 | } 173 | 174 | digitalWrite(D1, HIGH); // turn on relay with voltage HIGH 175 | digitalWrite(D2, HIGH); // turn on relay with voltage HIGH 176 | digitalWrite(D3, HIGH); // turn on relay with voltage HIGH 177 | digitalWrite(D4, HIGH); // turn on relay with voltage HIGH 178 | } 179 | 180 | if(request.indexOf("0") > 0) { 181 | if (squawk) { 182 | Serial.println("Got off request"); 183 | } 184 | 185 | digitalWrite(D1, LOW); // turn on relay with voltage LOW 186 | digitalWrite(D2, LOW); // turn on relay with voltage LOW 187 | digitalWrite(D3, LOW); // turn on relay with voltage LOW 188 | digitalWrite(D4, LOW); // turn on relay with voltage LOW 189 | } 190 | 191 | HTTP.send(200, "text/plain", ""); 192 | }); 193 | 194 | HTTP.on("/eventservice.xml", HTTP_GET, [](){ 195 | if (debug) { 196 | Serial.println(" ########## Responding to eventservice.xml ... ########\n"); 197 | } 198 | 199 | String eventservice_xml = "" 200 | "" 201 | "" 202 | "SetBinaryState" 203 | "" 204 | "" 205 | "" 206 | "BinaryState" 207 | "BinaryState" 208 | "in" 209 | "" 210 | "" 211 | "" 212 | "" 213 | "BinaryState" 214 | "Boolean" 215 | "0" 216 | "" 217 | "" 218 | "level" 219 | "string" 220 | "0" 221 | "" 222 | "" 223 | "" 224 | "\r\n" 225 | "\r\n"; 226 | 227 | HTTP.send(200, "text/plain", eventservice_xml.c_str()); 228 | }); 229 | 230 | HTTP.on("/setup.xml", HTTP_GET, [](){ 231 | if (debug) { 232 | Serial.println(" ########## Responding to setup.xml ... ########\n"); 233 | } 234 | 235 | 236 | IPAddress localIP = WiFi.localIP(); 237 | char s[16]; 238 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 239 | 240 | String setup_xml = "" 241 | "" 242 | "" 243 | "urn:Belkin:device:controllee:1" 244 | ""+ device_name +"" 245 | "Belkin International Inc." 246 | "Emulated Socket" 247 | "3.1415" 248 | "uuid:"+ persistent_uuid +"" 249 | "221517K0101769" 250 | "0" 251 | "" 252 | "" 253 | "urn:Belkin:service:basicevent:1" 254 | "urn:Belkin:serviceId:basicevent1" 255 | "/upnp/control/basicevent1" 256 | "/upnp/event/basicevent1" 257 | "/eventservice.xml" 258 | "" 259 | "" 260 | "" 261 | "\r\n" 262 | "\r\n"; 263 | 264 | HTTP.send(200, "text/xml", setup_xml.c_str()); 265 | if (debug) { 266 | Serial.print("Sending :"); 267 | Serial.println(setup_xml); 268 | } 269 | }); 270 | 271 | HTTP.begin(); 272 | if (debug) { 273 | Serial.println("HTTP Server started .."); 274 | } 275 | } 276 | 277 | void respondToSearch() { 278 | if (debug) { 279 | Serial.println(""); 280 | Serial.print("Sending response to "); 281 | Serial.println(UDP.remoteIP()); 282 | Serial.print("Port : "); 283 | Serial.println(UDP.remotePort()); 284 | } 285 | 286 | IPAddress localIP = WiFi.localIP(); 287 | char s[16]; 288 | sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]); 289 | 290 | String response = 291 | "HTTP/1.1 200 OK\r\n" 292 | "CACHE-CONTROL: max-age=86400\r\n" 293 | "DATE: Tue, 14 Dec 2016 02:30:00 GMT\r\n" 294 | "EXT:\r\n" 295 | "LOCATION: http://" + String(s) + ":80/setup.xml\r\n" 296 | "OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n" 297 | "01-NLS: b9200ebb-736d-4b93-bf03-835149d13983\r\n" 298 | "SERVER: Unspecified, UPnP/1.0, Unspecified\r\n" 299 | "ST: urn:Belkin:device:**\r\n" 300 | "USN: uuid:" + persistent_uuid + "::urn:Belkin:device:**\r\n" 301 | "X-User-Agent: redsonic\r\n\r\n"; 302 | 303 | UDP.beginPacket(UDP.remoteIP(), UDP.remotePort()); 304 | UDP.write(response.c_str()); 305 | UDP.endPacket(); 306 | if (debug) { 307 | Serial.println("Response sent !"); 308 | } 309 | } 310 | 311 | void configModeCallback(WiFiManager *myWiFiManager) { 312 | Serial.println("Entered config mode"); 313 | Serial.println("Soft AP's IP Address:"); 314 | Serial.println(WiFi.softAPIP()); 315 | Serial.println("WiFi Manager: Please connect to AP:"); 316 | Serial.println(myWiFiManager->getConfigPortalSSID()); 317 | Serial.println("To setup WiFi Configuration"); 318 | } 319 | -------------------------------------------------------------------------------- /Sketches/OLED/PlaneSpotter/PlaneSpotter.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include "SSD1306Wire.h" 13 | #include "OLEDDisplayUi.h" 14 | #include "Wire.h" 15 | #include "images.h" 16 | 17 | #include "TimeClient.h" 18 | #include "AdsbExchangeClient.h" 19 | 20 | /*************************** 21 | * Begin Settings 22 | **************************/ 23 | // Please read http://blog.squix.org/weatherstation-getting-code-adapting-it 24 | // for setup instructions 25 | 26 | #define HOSTNAME "ESP8266-OTA-" 27 | 28 | // Setup 29 | const int UPDATE_INTERVAL_SECS_LONG = 15; // Update every 15 seconds if no airplanes around 30 | const int UPDATE_INTERVAL_SECS_SHORT = 3; // Update every 3 seconds if there are airplanes 31 | 32 | int currentUpdateInterval = UPDATE_INTERVAL_SECS_LONG; 33 | long lastUpdate = 0; 34 | 35 | // Check http://www.virtualradarserver.co.uk/Documentation/Formats/AircraftList.aspx to craft this query to your needs: 36 | //const String QUERY_STRING = "lat=45.5231&lng=122.6765&fDstL=0&fDstU=10&fAltL=0&fAltL=250&fAltU=10000"; // Portland, OR 37 | const String QUERY_STRING = "lat=40.7128&lng=-74.0059&fDstL=0&fDstU=10&fAltL=0&fAltL=250&fAltU=10000"; // New York, NY 38 | 39 | const int UTC_OFFSET = 2; 40 | 41 | const float pi = 3.141; 42 | 43 | // Display Settings 44 | const int I2C_DISPLAY_ADDRESS = 0x3c; 45 | const int SDA_PIN = D3; 46 | const int SDC_PIN = D4; 47 | 48 | // Initialize the oled display for address 0x3c 49 | // sda-pin=14 and sdc-pin=12 50 | SSD1306Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN); 51 | OLEDDisplayUi ui( &display ); 52 | 53 | /*************************** 54 | * End Settings 55 | **************************/ 56 | 57 | TimeClient timeClient(UTC_OFFSET); 58 | 59 | AdsbExchangeClient adsbClient; 60 | 61 | // flag changed in the ticker function every 10 minutes 62 | bool readyForUpdate = false; 63 | 64 | Ticker ticker; 65 | 66 | //declaring prototypes 67 | void configModeCallback (WiFiManager *myWiFiManager); 68 | void drawProgress(OLEDDisplay *display, int percentage, String label); 69 | void drawOtaProgress(unsigned int, unsigned int); 70 | void updateData(OLEDDisplay *display); 71 | void drawCurrentAirplane1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); 72 | void drawCurrentAirplane2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); 73 | void drawCurrentAirplane3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); 74 | void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); 75 | void drawTextAsBigAsPossible(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y, String text, int maxWidth); 76 | void drawHeading(OLEDDisplay *display, int x, int y, double heading); 77 | void checkReadyForUpdate(); 78 | int8_t getWifiQuality(); 79 | 80 | 81 | // Add frames 82 | // this array keeps function pointers to all frames 83 | // frames are the single views that slide from right to left 84 | FrameCallback frames[] = { drawCurrentAirplane1, drawCurrentAirplane2, drawCurrentAirplane3 }; 85 | int numberOfFrames = 3; 86 | 87 | OverlayCallback overlays[] = { drawHeaderOverlay }; 88 | int numberOfOverlays = 1; 89 | 90 | void setup() { 91 | Serial.begin(115200); 92 | 93 | // initialize dispaly 94 | display.init(); 95 | display.clear(); 96 | display.display(); 97 | 98 | //display.flipScreenVertically(); 99 | display.setFont(ArialMT_Plain_10); 100 | display.setTextAlignment(TEXT_ALIGN_CENTER); 101 | display.setContrast(255); 102 | 103 | //WiFiManager 104 | //Local intialization. Once its business is done, there is no need to keep it around 105 | WiFiManager wifiManager; 106 | // Uncomment for testing wifi manager 107 | //wifiManager.resetSettings(); 108 | wifiManager.setAPCallback(configModeCallback); 109 | 110 | //or use this for auto generated name ESP + ChipID 111 | wifiManager.autoConnect(); 112 | 113 | //Manual Wifi 114 | //WiFi.begin(WIFI_SSID, WIFI_PWD); 115 | String hostname(HOSTNAME); 116 | hostname += String(ESP.getChipId(), HEX); 117 | WiFi.hostname(hostname); 118 | 119 | 120 | int counter = 0; 121 | while (WiFi.status() != WL_CONNECTED) { 122 | delay(500); 123 | Serial.print("."); 124 | display.clear(); 125 | display.drawString(64, 10, "Connecting to WiFi"); 126 | display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbol : inactiveSymbol); 127 | display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbol : inactiveSymbol); 128 | display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbol : inactiveSymbol); 129 | display.display(); 130 | 131 | counter++; 132 | } 133 | 134 | ui.setTargetFPS(30); 135 | 136 | //Hack until disableIndicator works: 137 | //Set an empty symbol 138 | ui.setActiveSymbol(emptySymbol); 139 | ui.setInactiveSymbol(emptySymbol); 140 | ui.disableIndicator(); 141 | 142 | // You can change the transition that is used 143 | // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN 144 | ui.setFrameAnimation(SLIDE_LEFT); 145 | 146 | ui.setFrames(frames, numberOfFrames); 147 | 148 | ui.setOverlays(overlays, numberOfOverlays); 149 | 150 | // Inital UI takes care of initalising the display too. 151 | ui.init(); 152 | 153 | // Setup OTA 154 | Serial.println("Hostname: " + hostname); 155 | ArduinoOTA.setHostname((const char *)hostname.c_str()); 156 | ArduinoOTA.onProgress(drawOtaProgress); 157 | ArduinoOTA.begin(); 158 | 159 | updateData(&display); 160 | 161 | //Check every second 162 | ticker.attach(1, checkReadyForUpdate); 163 | 164 | } 165 | 166 | void loop() { 167 | // If there are airplanes query often 168 | if (adsbClient.getNumberOfVisibleAircrafts() == 0) { 169 | currentUpdateInterval = UPDATE_INTERVAL_SECS_LONG; 170 | } else { 171 | currentUpdateInterval = UPDATE_INTERVAL_SECS_SHORT; 172 | } 173 | 174 | if (readyForUpdate && ui.getUiState()->frameState == FIXED) { 175 | updateData(&display); 176 | } 177 | 178 | int remainingTimeBudget = ui.update(); 179 | 180 | if (remainingTimeBudget > 0) { 181 | // You can do some work here 182 | // Don't do stuff if you are below your 183 | // time budget. 184 | ArduinoOTA.handle(); 185 | delay(remainingTimeBudget); 186 | } 187 | 188 | 189 | } 190 | 191 | void configModeCallback (WiFiManager *myWiFiManager) { 192 | Serial.println("Entered config mode"); 193 | Serial.println(WiFi.softAPIP()); 194 | //if you used auto generated SSID, print it 195 | Serial.println(myWiFiManager->getConfigPortalSSID()); 196 | display.clear(); 197 | display.setTextAlignment(TEXT_ALIGN_CENTER); 198 | display.setFont(ArialMT_Plain_10); 199 | display.drawString(64, 10, "Wifi Manager"); 200 | display.drawString(64, 20, "Please connect to AP"); 201 | display.drawString(64, 30, myWiFiManager->getConfigPortalSSID()); 202 | display.drawString(64, 40, "To setup Wifi Configuration"); 203 | display.display(); 204 | } 205 | 206 | void drawProgress(OLEDDisplay *display, int percentage, String label) { 207 | display->clear(); 208 | display->setTextAlignment(TEXT_ALIGN_CENTER); 209 | display->setFont(ArialMT_Plain_10); 210 | display->drawString(64, 10, label); 211 | display->drawProgressBar(2, 28, 124, 10, percentage); 212 | display->display(); 213 | } 214 | 215 | void drawOtaProgress(unsigned int progress, unsigned int total) { 216 | display.clear(); 217 | display.setTextAlignment(TEXT_ALIGN_CENTER); 218 | display.setFont(ArialMT_Plain_10); 219 | display.drawString(64, 10, "OTA Update"); 220 | display.drawProgressBar(2, 28, 124, 10, progress / (total / 100)); 221 | display.display(); 222 | } 223 | 224 | void updateData(OLEDDisplay *display) { 225 | readyForUpdate = false; 226 | adsbClient.updateVisibleAircraft(QUERY_STRING); 227 | lastUpdate = millis(); 228 | } 229 | 230 | void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) { 231 | 232 | if (adsbClient.isAircraftVisible()) { 233 | display->setTextAlignment(TEXT_ALIGN_LEFT); 234 | display->setFont(ArialMT_Plain_10); 235 | display->drawString(0, 10, "Dst:"); 236 | display->drawString(64, 10, "Alt:"); 237 | display->drawString(0, 32, "Head:"); 238 | display->setFont(ArialMT_Plain_16); 239 | display->drawString(0, 20, String(adsbClient.getDistance()) + "km"); 240 | display->drawString(64, 20, adsbClient.getAltitude() + "ft"); 241 | display->drawString(0, 42, String(adsbClient.getHeading()) + "°"); 242 | 243 | drawHeading(display, 78, 52, adsbClient.getHeading()); 244 | 245 | } 246 | 247 | int8_t quality = getWifiQuality(); 248 | for (int8_t i = 0; i < 4; i++) { 249 | for (int8_t j = 0; j < 2 * (i + 1); j++) { 250 | if (quality > i * 25 || j == 0) { 251 | display->setPixel(120 + 2 * i, 63 - j); 252 | } 253 | } 254 | } 255 | 256 | } 257 | 258 | // converts the dBm to a range between 0 and 100% 259 | int8_t getWifiQuality() { 260 | int32_t dbm = WiFi.RSSI(); 261 | if(dbm <= -100) { 262 | return 0; 263 | } else if(dbm >= -50) { 264 | return 100; 265 | } else { 266 | return 2 * (dbm + 100); 267 | } 268 | } 269 | 270 | void drawCurrentAirplane1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 271 | if (adsbClient.isAircraftVisible()) { 272 | display->setTextAlignment(TEXT_ALIGN_LEFT); 273 | display->setFont(ArialMT_Plain_10); 274 | 275 | display->drawString(0 + x, 0 + y, "From: " + adsbClient.getFrom()); 276 | } 277 | } 278 | 279 | void drawCurrentAirplane2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 280 | if (adsbClient.isAircraftVisible()) { 281 | display->setTextAlignment(TEXT_ALIGN_LEFT); 282 | display->setFont(ArialMT_Plain_10); 283 | 284 | display->drawString(0 + x, 0 + y, "To: " + adsbClient.getTo()); 285 | } 286 | } 287 | 288 | void drawCurrentAirplane3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) { 289 | if (adsbClient.isAircraftVisible()) { 290 | display->setTextAlignment(TEXT_ALIGN_LEFT); 291 | display->setFont(ArialMT_Plain_10); 292 | 293 | display->drawString(0 + x, 0 + y, "Type: " + adsbClient.getAircraftType()); 294 | } 295 | } 296 | 297 | void drawHeading(OLEDDisplay *display, int x, int y, double heading) { 298 | int degrees[] = {0, 170, 190, 0}; 299 | display->drawCircle(x, y, 10); 300 | int radius = 8; 301 | for (int i = 0; i < 3; i++) { 302 | int x1 = cos((-450 + (heading + degrees[i])) * pi / 180.0) * radius + x; 303 | int y1 = sin((-450 + (heading + degrees[i])) * pi / 180.0) * radius + y; 304 | int x2 = cos((-450 + (heading + degrees[i + 1])) * pi / 180.0) * radius + x; 305 | int y2 = sin((-450 + (heading + degrees[i + 1])) * pi / 180.0) * radius + y; 306 | display->drawLine(x1, y1, x2, y2); 307 | 308 | } 309 | } 310 | 311 | void checkReadyForUpdate() { 312 | // Only do light work in ticker callback 313 | if (lastUpdate < millis() - currentUpdateInterval * 1000) { 314 | readyForUpdate = true; 315 | } 316 | } 317 | -------------------------------------------------------------------------------- /Sketches/LED Board/led_board_new/led_board_new.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #define LEFT_PIN D5 6 | #define RIGHT_PIN D6 7 | 8 | int displayArray[10][10][3] = {{0, 0, 0}}; 9 | 10 | Adafruit_NeoMatrix leftMatrix = Adafruit_NeoMatrix( 11 | 5, 12 | 10, 13 | LEFT_PIN, 14 | NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT + 15 | NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, 16 | NEO_GRB + NEO_KHZ800); 17 | Adafruit_NeoMatrix rightMatrix = Adafruit_NeoMatrix( 18 | 5, 19 | 10, 20 | RIGHT_PIN, 21 | NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + 22 | NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, 23 | NEO_GRB + NEO_KHZ800); 24 | 25 | void setup() { 26 | leftMatrix.begin(); 27 | rightMatrix.begin(); 28 | randomSeed(1989); 29 | } 30 | 31 | void changePixel(int x, int y, int r, int g, int b) { 32 | displayArray[x][y][0] = r; 33 | displayArray[x][y][1] = g; 34 | displayArray[x][y][2] = b; 35 | } 36 | 37 | void clearBoard() { 38 | for(int x = 0; x < 10; x++) { 39 | for(int y = 0; y < 10; y++) { 40 | changePixel(x, y, 0, 0, 0); 41 | } 42 | } 43 | displayBoard(); 44 | } 45 | 46 | void displayBoard() { 47 | for(int x = 0; x < 10; x++){ 48 | for(int y = 0; y < 10; y++) { 49 | int r = displayArray[x][y][0]; 50 | int g = displayArray[x][y][1]; 51 | int b = displayArray[x][y][2]; 52 | if(x < 5) { 53 | leftMatrix.drawPixel(x, y, leftMatrix.Color(r, g, b)); 54 | } 55 | else { 56 | rightMatrix.drawPixel(x-5, y, rightMatrix.Color(r, g, b)); 57 | } 58 | } 59 | } 60 | leftMatrix.show(); 61 | rightMatrix.show(); 62 | } 63 | 64 | 65 | 66 | void drawSquares(int max_runs) { 67 | for(int count = 0; count < max_runs; count ++) { 68 | // Top left 69 | int r = random(80); 70 | int g = random(80); 71 | int b = random(80); 72 | for(int x = 0; x < 5; x++) { 73 | for(int y = 0; y < 5; y++) { 74 | changePixel(x, y, r, g, b); 75 | } 76 | } 77 | 78 | // Top right 79 | r = random(80); 80 | g = random(80); 81 | b = random(80); 82 | for(int x = 5; x < 10; x++) { 83 | for(int y = 0; y < 5; y++) { 84 | changePixel(x, y, r, g, b); 85 | } 86 | } 87 | 88 | 89 | // Bottom left 90 | r = random(80); 91 | g = random(80); 92 | b = random(80); 93 | for(int x = 0; x < 5; x++) { 94 | for(int y = 5; y < 10; y++) { 95 | changePixel(x, y, r, g, b); 96 | } 97 | } 98 | 99 | // Bottom right 100 | r = random(80); 101 | g = random(80); 102 | b = random(80); 103 | for(int x = 5; x < 10; x++) { 104 | for(int y = 5; y < 10; y++) { 105 | changePixel(x, y, r, g, b); 106 | } 107 | } 108 | 109 | // Display it 110 | displayBoard(); 111 | delay(1000); 112 | } 113 | } 114 | 115 | void drawRandomColors(int max_runs) { 116 | for(int count = 0; count < max_runs; count ++) { 117 | for(int x = 0; x < 10; x++) { 118 | for(int y = 0; y < 10; y++) { 119 | changePixel(y, x, random(30), random(30), random(30)); 120 | displayBoard(); 121 | delay(50); 122 | } 123 | } 124 | delay(3000); 125 | } 126 | } 127 | void drawIBM() { 128 | for(int fadeNum = 0; fadeNum < 200; fadeNum ++){ 129 | // I 130 | changePixel(0,0, 0, 0, fadeNum); 131 | changePixel(0,1, 0, 0, fadeNum); 132 | changePixel(0,2, 0, 0, fadeNum); 133 | changePixel(1,0, 0, 0, fadeNum); 134 | changePixel(1,1, 0, 0, fadeNum); 135 | changePixel(1,2, 0, 0, fadeNum); 136 | changePixel(2,0, 0, 0, fadeNum); 137 | changePixel(2,1, 0, 0, fadeNum); 138 | changePixel(2,2, 0, 0, fadeNum); 139 | changePixel(3,0, 0, 0, fadeNum); 140 | changePixel(3,1, 0, 0, fadeNum); 141 | changePixel(3,2, 0, 0, fadeNum); 142 | changePixel(4,0, 0, 0, fadeNum); 143 | changePixel(4,1, 0, 0, fadeNum); 144 | changePixel(4,2, 0, 0, fadeNum); 145 | changePixel(5,0, 0, 0, fadeNum); 146 | changePixel(5,1, 0, 0, fadeNum); 147 | changePixel(5,2, 0, 0, fadeNum); 148 | changePixel(6,0, 0, 0, fadeNum); 149 | changePixel(6,1, 0, 0, fadeNum); 150 | changePixel(6,2, 0, 0, fadeNum); 151 | changePixel(7,0, 0, 0, fadeNum); 152 | changePixel(7,1, 0, 0, fadeNum); 153 | changePixel(7,2, 0, 0, fadeNum); 154 | changePixel(8,0, 0, 0, fadeNum); 155 | changePixel(8,1, 0, 0, fadeNum); 156 | changePixel(8,2, 0, 0, fadeNum); 157 | changePixel(9,0, 0, 0, fadeNum); 158 | changePixel(9,1, 0, 0, fadeNum); 159 | changePixel(9,2, 0, 0, fadeNum); 160 | changePixel(3,3, 0, 0, fadeNum); 161 | changePixel(4,3, 0, 0, fadeNum); 162 | changePixel(5,3, 0, 0, fadeNum); 163 | changePixel(6,3, 0, 0, fadeNum); 164 | changePixel(3,4, 0, 0, fadeNum); 165 | changePixel(4,4, 0, 0, fadeNum); 166 | changePixel(5,4, 0, 0, fadeNum); 167 | changePixel(6,4, 0, 0, fadeNum); 168 | changePixel(3,5, 0, 0, fadeNum); 169 | changePixel(4,5, 0, 0, fadeNum); 170 | changePixel(5,5, 0, 0, fadeNum); 171 | changePixel(6,5, 0, 0, fadeNum); 172 | changePixel(3,6, 0, 0, fadeNum); 173 | changePixel(4,6, 0, 0, fadeNum); 174 | changePixel(5,6, 0, 0, fadeNum); 175 | changePixel(6,6, 0, 0, fadeNum); 176 | changePixel(0,7, 0, 0, fadeNum); 177 | changePixel(0,8, 0, 0, fadeNum); 178 | changePixel(0,9, 0, 0, fadeNum); 179 | changePixel(1,7, 0, 0, fadeNum); 180 | changePixel(1,8, 0, 0, fadeNum); 181 | changePixel(1,9, 0, 0, fadeNum); 182 | changePixel(2,7, 0, 0, fadeNum); 183 | changePixel(2,8, 0, 0, fadeNum); 184 | changePixel(2,9, 0, 0, fadeNum); 185 | changePixel(3,7, 0, 0, fadeNum); 186 | changePixel(3,8, 0, 0, fadeNum); 187 | changePixel(3,9, 0, 0, fadeNum); 188 | changePixel(4,7, 0, 0, fadeNum); 189 | changePixel(4,8, 0, 0, fadeNum); 190 | changePixel(4,9, 0, 0, fadeNum); 191 | changePixel(5,7, 0, 0, fadeNum); 192 | changePixel(5,8, 0, 0, fadeNum); 193 | changePixel(5,9, 0, 0, fadeNum); 194 | changePixel(6,7, 0, 0, fadeNum); 195 | changePixel(6,8, 0, 0, fadeNum); 196 | changePixel(6,9, 0, 0, fadeNum); 197 | changePixel(7,7, 0, 0, fadeNum); 198 | changePixel(7,8, 0, 0, fadeNum); 199 | changePixel(7,9, 0, 0, fadeNum); 200 | changePixel(8,7, 0, 0, fadeNum); 201 | changePixel(8,8, 0, 0, fadeNum); 202 | changePixel(8,9, 0, 0, fadeNum); 203 | changePixel(9,7, 0, 0, fadeNum); 204 | changePixel(9,8, 0, 0, fadeNum); 205 | changePixel(9,9, 0, 0, fadeNum); 206 | displayBoard(); 207 | delay(10); 208 | } 209 | delay(1000); 210 | for(int fadeNum = 0; fadeNum < 200; fadeNum ++){ 211 | // B 212 | for(int x = 0; x < 10; x++) { 213 | for(int y = 0; y < 10; y++) { 214 | changePixel(x, y, 0, 0, fadeNum); 215 | } 216 | } 217 | changePixel(8,0, 0, 0, 0); 218 | changePixel(9,0, 0, 0, 0); 219 | changePixel(9,4, 0, 0, 0); 220 | changePixel(9,5, 0, 0, 0); 221 | changePixel(9,9, 0, 0, 0); 222 | changePixel(2,2, 0, 0, 0); 223 | changePixel(3,2, 0, 0, 0); 224 | changePixel(4,2, 0, 0, 0); 225 | changePixel(5,2, 0, 0, 0); 226 | changePixel(6,2, 0, 0, 0); 227 | changePixel(2,3, 0, 0, 0); 228 | changePixel(3,3, 0, 0, 0); 229 | changePixel(4,3, 0, 0, 0); 230 | changePixel(5,3, 0, 0, 0); 231 | changePixel(2,6, 0, 0, 0); 232 | changePixel(3,6, 0, 0, 0); 233 | changePixel(4,6, 0, 0, 0); 234 | changePixel(5,6, 0, 0, 0); 235 | changePixel(6,6, 0, 0, 0); 236 | changePixel(7,6, 0, 0, 0); 237 | changePixel(2,7, 0, 0, 0); 238 | changePixel(3,7, 0, 0, 0); 239 | changePixel(4,7, 0, 0, 0); 240 | changePixel(5,7, 0, 0, 0); 241 | changePixel(6,7, 0, 0, 0); 242 | displayBoard(); 243 | delay(10); 244 | } 245 | delay(1000); 246 | clearBoard(); 247 | for(int fadeNum = 0; fadeNum < 200; fadeNum ++){ 248 | // M 249 | for(int y = 0; y < 10; y++) { 250 | for(int x = 0; x < 3; x++) { 251 | changePixel(x, y, 0, 0, fadeNum); 252 | } 253 | } 254 | changePixel(3,2, 0, 0, fadeNum); 255 | changePixel(3,3, 0, 0, fadeNum); 256 | changePixel(3,4, 0, 0, fadeNum); 257 | changePixel(4,3, 0, 0, fadeNum); 258 | changePixel(4,4, 0, 0, fadeNum); 259 | changePixel(4,5, 0, 0, fadeNum); 260 | changePixel(5,3, 0, 0, fadeNum); 261 | changePixel(5,4, 0, 0, fadeNum); 262 | changePixel(5,5, 0, 0, fadeNum); 263 | changePixel(6,2, 0, 0, fadeNum); 264 | changePixel(6,3, 0, 0, fadeNum); 265 | changePixel(6,4, 0, 0, fadeNum); 266 | for(int y = 0; y < 10; y++) { 267 | for(int x = 7; x < 10; x++) { 268 | changePixel(x, y, 0, 0, fadeNum); 269 | } 270 | } 271 | displayBoard(); 272 | delay(10); 273 | } 274 | delay(1000); 275 | } 276 | 277 | void drawWatson() { 278 | clearBoard(); 279 | // Draw on 280 | changePixel(5, 0, 31, 154, 236); 281 | displayBoard(); 282 | delay(80); 283 | changePixel(2, 1, 31, 154, 236); 284 | displayBoard(); 285 | delay(80); 286 | changePixel(5, 1, 31, 154, 236); 287 | displayBoard(); 288 | delay(80); 289 | changePixel(8, 1, 31, 154, 236); 290 | displayBoard(); 291 | delay(80); 292 | changePixel(3, 2, 31, 154, 236); 293 | displayBoard(); 294 | delay(80); 295 | changePixel(5, 2, 31, 154, 236); 296 | displayBoard(); 297 | delay(80); 298 | changePixel(7, 2, 31, 154, 236); 299 | displayBoard(); 300 | delay(80); 301 | changePixel(0, 3, 31, 154, 236); 302 | displayBoard(); 303 | delay(80); 304 | changePixel(9, 3, 31, 154, 236); 305 | displayBoard(); 306 | delay(80); 307 | changePixel(1, 4, 31, 154, 236); 308 | displayBoard(); 309 | delay(80); 310 | changePixel(4, 4, 31, 154, 236); 311 | displayBoard(); 312 | delay(80); 313 | changePixel(5, 4, 31, 154, 236); 314 | displayBoard(); 315 | delay(80); 316 | changePixel(8, 4, 31, 154, 236); 317 | displayBoard(); 318 | delay(80); 319 | changePixel(3, 5, 31, 154, 236); 320 | displayBoard(); 321 | delay(80); 322 | changePixel(6, 5, 31, 154, 236); 323 | displayBoard(); 324 | delay(80); 325 | changePixel(2, 6, 31, 154, 236); 326 | displayBoard(); 327 | delay(80); 328 | changePixel(7, 6, 31, 154, 236); 329 | displayBoard(); 330 | delay(80); 331 | changePixel(2, 7, 31, 154, 236); 332 | displayBoard(); 333 | delay(80); 334 | changePixel(7, 7, 31, 154, 236); 335 | displayBoard(); 336 | delay(80); 337 | changePixel(3, 8, 31, 154, 236); 338 | displayBoard(); 339 | delay(80); 340 | changePixel(6, 8, 31, 154, 236); 341 | displayBoard(); 342 | delay(80); 343 | changePixel(4, 9, 31, 154, 236); 344 | displayBoard(); 345 | delay(80); 346 | changePixel(5, 9, 31, 154, 236); 347 | displayBoard(); 348 | delay(80); 349 | 350 | // Pause 351 | delay(5000); 352 | 353 | // Draw out 354 | changePixel(5, 0, 0, 0, 0); 355 | displayBoard(); 356 | delay(80); 357 | changePixel(2, 1, 0, 0, 0); 358 | displayBoard(); 359 | delay(80); 360 | changePixel(5, 1, 0, 0, 0); 361 | displayBoard(); 362 | delay(80); 363 | changePixel(8, 1, 0, 0, 0); 364 | displayBoard(); 365 | delay(80); 366 | changePixel(3, 2, 0, 0, 0); 367 | displayBoard(); 368 | delay(80); 369 | changePixel(5, 2, 0, 0, 0); 370 | displayBoard(); 371 | delay(80); 372 | changePixel(7, 2, 0, 0, 0); 373 | displayBoard(); 374 | delay(80); 375 | changePixel(0, 3, 0, 0, 0); 376 | displayBoard(); 377 | delay(80); 378 | changePixel(9, 3, 0, 0, 0); 379 | displayBoard(); 380 | delay(80); 381 | changePixel(1, 4, 0, 0, 0); 382 | displayBoard(); 383 | delay(80); 384 | changePixel(4, 4, 0, 0, 0); 385 | displayBoard(); 386 | delay(80); 387 | changePixel(5, 4, 0, 0, 0); 388 | displayBoard(); 389 | delay(80); 390 | changePixel(8, 4, 0, 0, 0); 391 | displayBoard(); 392 | delay(80); 393 | changePixel(3, 5, 0, 0, 0); 394 | displayBoard(); 395 | delay(80); 396 | changePixel(6, 5, 0, 0, 0); 397 | displayBoard(); 398 | delay(80); 399 | changePixel(2, 6, 0, 0, 0); 400 | displayBoard(); 401 | delay(80); 402 | changePixel(7, 6, 0, 0, 0); 403 | displayBoard(); 404 | delay(80); 405 | changePixel(2, 7, 0, 0, 0); 406 | displayBoard(); 407 | delay(80); 408 | changePixel(7, 7, 0, 0, 0); 409 | displayBoard(); 410 | delay(80); 411 | changePixel(3, 8, 0, 0, 0); 412 | displayBoard(); 413 | delay(80); 414 | changePixel(6, 8, 0, 0, 0); 415 | displayBoard(); 416 | delay(80); 417 | changePixel(4, 9, 0, 0, 0); 418 | displayBoard(); 419 | delay(80); 420 | changePixel(5, 9, 0, 0, 0); 421 | displayBoard(); 422 | delay(80); 423 | } 424 | 425 | 426 | void loop() { 427 | drawIBM(); 428 | drawWatson(); 429 | drawRandomColors(1); 430 | drawSquares(50); 431 | } 432 | -------------------------------------------------------------------------------- /Sketches/OLED/WorldClock/icons.h: -------------------------------------------------------------------------------- 1 | const char activeSymbol[] PROGMEM = { 2 | B00000000, 3 | B00000000, 4 | B00011000, 5 | B00100100, 6 | B01000010, 7 | B01000010, 8 | B00100100, 9 | B00011000 10 | }; 11 | 12 | const char inactiveSymbol[] PROGMEM = { 13 | B00000000, 14 | B00000000, 15 | B00000000, 16 | B00000000, 17 | B00011000, 18 | B00011000, 19 | B00000000, 20 | B00000000 21 | }; 22 | 23 | // Icons by Adam Whitcroft: http://adamwhitcroft.com/offscreen/ 24 | 25 | #define amsterdam_width 60 26 | #define amsterdam_height 60 27 | const char amsterdam_bits[] PROGMEM= { 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 30 | 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 31 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x00, 0x00, 0x00, 32 | 0x00, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 33 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x00, 0x00, 0x00, 34 | 0x00, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 35 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x00, 0x00, 0x00, 36 | 0x00, 0x00, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 37 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x81, 0x00, 0x00, 0x00, 38 | 0x00, 0x00, 0xE0, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x40, 39 | 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x40, 0x81, 0x07, 0x00, 0x00, 40 | 0x00, 0x00, 0x07, 0x40, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x03, 0x40, 41 | 0xFF, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x7F, 0x40, 0x81, 0x70, 0x00, 0x00, 42 | 0x00, 0x60, 0xDB, 0x40, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x60, 0xDB, 0x40, 43 | 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x70, 0xDB, 0xF0, 0x01, 0x80, 0x01, 0x00, 44 | 0x00, 0x78, 0xDB, 0xBE, 0x07, 0x00, 0x01, 0x00, 0x00, 0x78, 0xDB, 0x07, 45 | 0x1C, 0x00, 0x03, 0x00, 0x00, 0x6C, 0xDB, 0x00, 0x30, 0x00, 0x02, 0x00, 46 | 0x00, 0xFC, 0xFF, 0xFC, 0x67, 0x00, 0x06, 0x00, 0x00, 0x04, 0x60, 0xFE, 47 | 0x6F, 0x00, 0x06, 0x00, 0x00, 0xFE, 0x7F, 0xB6, 0xCD, 0xFF, 0x0F, 0x00, 48 | 0x00, 0x06, 0x60, 0xFE, 0xCF, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x30, 0xFC, 49 | 0x87, 0xFF, 0x0F, 0x00, 0x00, 0x02, 0x30, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 50 | 0x00, 0x03, 0xF0, 0xFF, 0xFF, 0xDB, 0x0E, 0x00, 0x00, 0x03, 0x80, 0x00, 51 | 0x30, 0xDB, 0x0E, 0x00, 0x00, 0x03, 0xE0, 0xFF, 0x7F, 0xDB, 0x0E, 0x00, 52 | 0x00, 0x03, 0x60, 0x00, 0xC0, 0xDB, 0x0E, 0x00, 0x00, 0x03, 0x60, 0xF0, 53 | 0xC0, 0xDB, 0x0E, 0x00, 0x00, 0x02, 0x20, 0xF0, 0xC1, 0xFF, 0x0F, 0x00, 54 | 0x00, 0x02, 0x20, 0xB0, 0x81, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x30, 0xB0, 55 | 0x81, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x30, 0xB0, 0x81, 0x01, 0x0C, 0x00, 56 | 0x00, 0xE4, 0x33, 0xF0, 0x81, 0xF9, 0x04, 0x00, 0x00, 0xFC, 0x13, 0xE0, 57 | 0x80, 0xFD, 0x06, 0x00, 0x00, 0x3C, 0x12, 0x00, 0x80, 0x89, 0x03, 0x00, 58 | 0x00, 0xF8, 0x1B, 0xF8, 0x03, 0xF9, 0x03, 0x00, 0x00, 0xD8, 0x19, 0x00, 59 | 0x00, 0x71, 0x01, 0x00, 0x00, 0xB0, 0xF8, 0xFF, 0xFF, 0xA1, 0x01, 0x00, 60 | 0x00, 0xE0, 0x60, 0x00, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xFF, 61 | 0xFF, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xE1, 0xFF, 0xFF, 0x30, 0x00, 0x00, 62 | 0x00, 0x80, 0xE3, 0xBF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xBF, 63 | 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xB0, 0xC1, 0x07, 0x00, 0x00, 64 | 0x00, 0x00, 0xF8, 0xBF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xB7, 65 | 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 68 | }; 69 | #define austin_width 60 70 | #define austin_height 60 71 | const char austin_bits[] PROGMEM= { 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 77 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 78 | 0x00, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 79 | 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x38, 0x00, 0x00, 0x00, 80 | 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 81 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1B, 0x69, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0xE0, 0x1B, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1B, 83 | 0xE9, 0x03, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x1B, 0x68, 0x07, 0x00, 0x00, 84 | 0x00, 0x00, 0xC7, 0x18, 0x68, 0x0C, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x18, 85 | 0x68, 0x38, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x18, 0x60, 0x70, 0x00, 0x00, 86 | 0x00, 0x60, 0xC0, 0x18, 0x60, 0x60, 0x00, 0x00, 0x00, 0x20, 0xC0, 0x18, 87 | 0x60, 0xC0, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x18, 0x60, 0x80, 0x01, 0x00, 88 | 0x00, 0x18, 0xC0, 0x00, 0x60, 0x00, 0x01, 0x00, 0x00, 0x08, 0xC0, 0x00, 89 | 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0xE0, 0xFF, 0xFF, 0x00, 0x03, 0x00, 90 | 0x00, 0x04, 0xE0, 0xF0, 0xE1, 0xC0, 0x07, 0x00, 0x00, 0x06, 0xE0, 0x98, 91 | 0xF1, 0xC0, 0x04, 0x00, 0x00, 0x06, 0xA0, 0x0D, 0x9B, 0x40, 0x0C, 0x00, 92 | 0x00, 0x06, 0xE0, 0xFF, 0xFF, 0x78, 0x0C, 0x00, 0x00, 0x02, 0xE0, 0xFF, 93 | 0xFF, 0x7C, 0x0C, 0x00, 0x00, 0x02, 0xC0, 0x1B, 0x61, 0x04, 0x08, 0x00, 94 | 0x00, 0x03, 0xC0, 0x18, 0x61, 0x04, 0x08, 0x00, 0x00, 0x03, 0xC0, 0x01, 95 | 0x70, 0xFC, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x01, 0x78, 0xF0, 0x0F, 0x00, 96 | 0x00, 0xC3, 0x43, 0x07, 0x6C, 0x00, 0x08, 0x00, 0x00, 0xE3, 0x47, 0x9E, 97 | 0x4F, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x6C, 0xFE, 0x4F, 0x00, 0x08, 0x00, 98 | 0x00, 0x1E, 0x78, 0x46, 0x4C, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x78, 0xFE, 99 | 0x4F, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x78, 0xFE, 0xCF, 0x00, 0x0C, 0x00, 100 | 0x00, 0x04, 0x78, 0xFE, 0xCF, 0x00, 0x04, 0x00, 0x00, 0x04, 0xF8, 0xFC, 101 | 0xC7, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x80, 0x40, 0xC0, 0x00, 0x02, 0x00, 102 | 0x00, 0x18, 0x80, 0x40, 0xC0, 0x00, 0x03, 0x00, 0x00, 0xF8, 0xFF, 0x40, 103 | 0xC0, 0x00, 0x01, 0x00, 0x00, 0xF0, 0x3F, 0x40, 0x80, 0x80, 0x01, 0x00, 104 | 0x00, 0x60, 0xE0, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x60, 0xF0, 0xFF, 105 | 0xFF, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x40, 0xE0, 0x30, 0x00, 0x00, 106 | 0x00, 0x80, 0xB3, 0x41, 0xB0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x36, 0x43, 107 | 0x98, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x46, 0x8C, 0x07, 0x00, 0x00, 108 | 0x00, 0x00, 0x78, 0x4C, 0xC6, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x5F, 109 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 110 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 111 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 112 | }; 113 | #define barcelona_width 60 114 | #define barcelona_height 60 115 | const char barcelona_bits[] PROGMEM= { 116 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 118 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 119 | 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x00, 120 | 0x00, 0x00, 0xB0, 0x03, 0xD8, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01, 121 | 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x00, 0x00, 122 | 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, 123 | 0x60, 0x60, 0x00, 0x00, 0x00, 0xF0, 0xC1, 0x00, 0x60, 0xF0, 0x00, 0x00, 124 | 0x00, 0xB0, 0xE1, 0x00, 0x70, 0xB8, 0x01, 0x00, 0x00, 0xE0, 0xE0, 0xF1, 125 | 0xF1, 0xF0, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0xFF, 0xDF, 0x60, 0x00, 0x00, 126 | 0x00, 0xE0, 0x20, 0x03, 0x98, 0x60, 0x00, 0x00, 0x00, 0x40, 0x38, 0x01, 127 | 0x98, 0x63, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x03, 0xB8, 0x67, 0x00, 0x00, 128 | 0x00, 0xE0, 0x37, 0x03, 0x98, 0xFD, 0x00, 0x00, 0x00, 0xA0, 0x71, 0x03, 129 | 0xB8, 0xF9, 0x00, 0x00, 0x00, 0xA0, 0x11, 0x03, 0x88, 0xB1, 0x00, 0x00, 130 | 0x00, 0xB0, 0x11, 0x02, 0x08, 0x91, 0x00, 0x00, 0x00, 0x30, 0x11, 0x02, 131 | 0x08, 0xF1, 0x01, 0x00, 0x00, 0xF0, 0x19, 0x02, 0x0C, 0x99, 0x01, 0x00, 132 | 0x00, 0x18, 0x59, 0x02, 0x2C, 0x99, 0x01, 0x00, 0x00, 0x58, 0x19, 0x02, 133 | 0x0C, 0x99, 0x03, 0x00, 0x00, 0x1C, 0x5B, 0x02, 0x2C, 0x19, 0x03, 0x00, 134 | 0x00, 0x1C, 0xDB, 0xE2, 0x6C, 0x49, 0x07, 0x00, 0x00, 0x5C, 0xDB, 0xE2, 135 | 0x6C, 0x09, 0x07, 0x00, 0x00, 0x1E, 0xDB, 0xB2, 0x6C, 0x49, 0x0F, 0x00, 136 | 0x00, 0x5E, 0xDB, 0x92, 0x6D, 0x09, 0x0F, 0x00, 0x00, 0x1A, 0xDB, 0x92, 137 | 0x6D, 0x09, 0x0B, 0x00, 0x00, 0x5A, 0xDA, 0x12, 0x6D, 0x6B, 0x0B, 0x00, 138 | 0x00, 0x5B, 0xDA, 0x1E, 0x6D, 0x6B, 0x0B, 0x00, 0x00, 0x4B, 0xDA, 0x1E, 139 | 0x6F, 0x6B, 0x0B, 0x00, 0x00, 0x4A, 0xDA, 0xB8, 0x65, 0x6B, 0x0B, 0x00, 140 | 0x00, 0x4B, 0x5A, 0xF0, 0x21, 0x6F, 0x0B, 0x00, 0x00, 0x4B, 0x1A, 0xFC, 141 | 0x07, 0x6F, 0x0B, 0x00, 0x00, 0x4A, 0x5A, 0xFC, 0x25, 0x6F, 0x0B, 0x00, 142 | 0x00, 0x4A, 0xDA, 0xF0, 0x61, 0x6F, 0x0F, 0x00, 0x00, 0x4E, 0xDA, 0x5C, 143 | 0x67, 0x6F, 0x0F, 0x00, 0x00, 0x4E, 0x5A, 0x5E, 0x2F, 0x6F, 0x0F, 0x00, 144 | 0x00, 0x4C, 0x1A, 0x5E, 0x0F, 0x6F, 0x07, 0x00, 0x00, 0x4C, 0x1A, 0x4E, 145 | 0x0F, 0x6F, 0x07, 0x00, 0x00, 0x4C, 0xDA, 0x4E, 0x6E, 0x6F, 0x03, 0x00, 146 | 0x00, 0x58, 0xDA, 0x4E, 0x6E, 0x6F, 0x03, 0x00, 0x00, 0x58, 0xDA, 0x4E, 147 | 0x6E, 0x6F, 0x01, 0x00, 0x00, 0x70, 0xDA, 0x46, 0x6E, 0xEF, 0x01, 0x00, 148 | 0x00, 0x60, 0xDA, 0x46, 0x6C, 0xEF, 0x00, 0x00, 0x00, 0xC0, 0xDA, 0x46, 149 | 0x6C, 0x6F, 0x00, 0x00, 0x00, 0xC0, 0xDB, 0x06, 0x6C, 0x3F, 0x00, 0x00, 150 | 0x00, 0x80, 0xDB, 0x42, 0x6C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xF2, 151 | 0x6D, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x92, 0x69, 0x07, 0x00, 0x00, 152 | 0x00, 0x00, 0xF8, 0x1B, 0xF9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 153 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 154 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 155 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 156 | }; 157 | #define berlin_width 60 158 | #define berlin_height 60 159 | const char berlin_bits[] PROGMEM= { 160 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 161 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 163 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 164 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 166 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 168 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 169 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 170 | 0x00, 0x00, 0xE0, 0x43, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF0, 171 | 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xE0, 0x00, 0x07, 0x00, 0x00, 172 | 0x00, 0x00, 0x07, 0xFC, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x03, 0xFC, 173 | 0x07, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x06, 0x70, 0x00, 0x00, 174 | 0x00, 0x60, 0x00, 0xFC, 0x07, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x18, 175 | 0x01, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x58, 0x01, 0x80, 0x01, 0x00, 176 | 0x00, 0x18, 0x00, 0x18, 0x01, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0xFC, 177 | 0x07, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0xFC, 0x06, 0x00, 0x02, 0x00, 178 | 0x00, 0x04, 0x0F, 0xEC, 0x06, 0x00, 0x06, 0x00, 0x00, 0x84, 0x1F, 0xFC, 179 | 0x07, 0x00, 0x04, 0x00, 0x00, 0x86, 0xF0, 0x4E, 0x0F, 0x00, 0x0C, 0x00, 180 | 0x00, 0xC6, 0xB0, 0x53, 0x1D, 0x00, 0x0C, 0x00, 0x00, 0xF2, 0x00, 0x3F, 181 | 0x39, 0x00, 0x0C, 0x00, 0x00, 0xFA, 0x00, 0x7F, 0x35, 0x00, 0x08, 0x00, 182 | 0x00, 0x0F, 0x00, 0xC0, 0x21, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x00, 0xC0, 183 | 0x21, 0x00, 0x08, 0x00, 0x00, 0xFB, 0xFF, 0x7F, 0x65, 0x00, 0x08, 0x00, 184 | 0x00, 0xF3, 0xFF, 0x3F, 0x21, 0x00, 0x08, 0x00, 0x00, 0x03, 0xC0, 0xFF, 185 | 0x3F, 0x00, 0x08, 0x00, 0x00, 0x02, 0x80, 0xFF, 0x3F, 0x1C, 0x08, 0x00, 186 | 0x00, 0x02, 0x80, 0x01, 0x38, 0x7F, 0x0C, 0x00, 0x00, 0x06, 0x00, 0xFF, 187 | 0x1F, 0xC1, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x0E, 0x8E, 0xC1, 0x0F, 0x00, 188 | 0x00, 0x04, 0x00, 0xFC, 0x87, 0x01, 0x06, 0x00, 0x00, 0x0C, 0x00, 0xF8, 189 | 0xC1, 0x01, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x98, 0x63, 0x00, 0x02, 0x00, 190 | 0x00, 0x18, 0x00, 0xFC, 0x37, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x04, 191 | 0x26, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0xFC, 0xE7, 0xFF, 0x01, 0x00, 192 | 0x00, 0x60, 0x00, 0x18, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0xFC, 193 | 0x07, 0x60, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xFC, 0x07, 0x30, 0x00, 0x00, 194 | 0x00, 0x80, 0x03, 0xFC, 0x07, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFC, 195 | 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x58, 0x03, 0x07, 0x00, 0x00, 196 | 0x00, 0x00, 0x78, 0x58, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 197 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 198 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 199 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 200 | }; 201 | #define cape_town_width 60 202 | #define cape_town_height 60 203 | const char cape_town_bits[] PROGMEM= { 204 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 205 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 206 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 207 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 208 | 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 209 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 210 | 0x00, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 211 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 212 | 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 213 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 214 | 0x00, 0x00, 0xE0, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x07, 215 | 0xCE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xE3, 0x08, 0x07, 0x00, 0x00, 216 | 0x00, 0x00, 0x07, 0xB3, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x03, 0xB3, 217 | 0x08, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xE3, 0x08, 0x70, 0x00, 0x00, 218 | 0x00, 0x60, 0x00, 0x03, 0x08, 0x60, 0x00, 0x00, 0x00, 0x20, 0xC0, 0xFF, 219 | 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x30, 0xC0, 0xFF, 0x7F, 0x80, 0x01, 0x00, 220 | 0x00, 0x18, 0xC0, 0xF6, 0x6D, 0x00, 0x01, 0x00, 0x00, 0x88, 0xC0, 0xF7, 221 | 0x7D, 0x20, 0x03, 0x00, 0x00, 0x8C, 0x80, 0xBB, 0x3B, 0x20, 0x02, 0x00, 222 | 0x00, 0xC4, 0x81, 0x0C, 0x36, 0x70, 0x06, 0x00, 0x00, 0xE4, 0x83, 0x07, 223 | 0x3C, 0xF8, 0x06, 0x00, 0x00, 0x7E, 0xFF, 0x01, 0xF8, 0xDF, 0x0F, 0x00, 224 | 0x00, 0xE6, 0xE3, 0x00, 0xE0, 0xF8, 0x0C, 0x00, 0x00, 0xC2, 0x31, 0x00, 225 | 0xC0, 0x71, 0x0C, 0x00, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x03, 0x08, 0x00, 226 | 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0E, 0x08, 0x00, 0x00, 0x03, 0x07, 0x00, 227 | 0x00, 0x1C, 0x08, 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0x7F, 0x08, 0x00, 228 | 0x00, 0xC3, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 229 | 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 230 | 0x00, 0x82, 0x90, 0xB0, 0xB1, 0x21, 0x0C, 0x00, 0x00, 0x86, 0x9F, 0xBF, 231 | 0xBF, 0x3F, 0x0C, 0x00, 0x00, 0x86, 0x9F, 0x1F, 0x1F, 0x3F, 0x0C, 0x00, 232 | 0x00, 0x84, 0x9F, 0x1F, 0x1F, 0x3F, 0x04, 0x00, 0x00, 0x8C, 0x9F, 0x9F, 233 | 0x1F, 0x3F, 0x06, 0x00, 0x00, 0x8C, 0x19, 0x19, 0x11, 0x13, 0x02, 0x00, 234 | 0x00, 0x98, 0x19, 0x19, 0x11, 0x13, 0x03, 0x00, 0x00, 0x98, 0x19, 0x19, 235 | 0x11, 0x13, 0x01, 0x00, 0x00, 0xB0, 0xD9, 0xFF, 0x3F, 0x93, 0x01, 0x00, 236 | 0x00, 0xE0, 0xD9, 0x00, 0x60, 0xD3, 0x00, 0x00, 0x00, 0xE0, 0xD9, 0xFF, 237 | 0x7F, 0x73, 0x00, 0x00, 0x00, 0xC0, 0xD9, 0xFF, 0x7F, 0x33, 0x00, 0x00, 238 | 0x00, 0x80, 0xDB, 0x0C, 0x67, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x9E, 239 | 0x6F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xB3, 0x69, 0x07, 0x00, 0x00, 240 | 0x00, 0x00, 0xF8, 0xB3, 0xE9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xB7, 241 | 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 242 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 243 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 244 | }; 245 | #define dublin_width 60 246 | #define dublin_height 60 247 | const char dublin_bits[] PROGMEM= { 248 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 249 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 250 | 0x00, 0x80, 0x03, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 251 | 0x00, 0x7C, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x64, 0x00, 0x00, 252 | 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 253 | 0x00, 0x64, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x64, 0x00, 0x00, 254 | 0x00, 0xC0, 0x07, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 255 | 0x00, 0x46, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x66, 0x00, 0x00, 256 | 0x00, 0xC0, 0x07, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x40, 0x04, 0xF0, 257 | 0x01, 0x46, 0x00, 0x00, 0x00, 0x40, 0x04, 0xFF, 0x1F, 0x66, 0x00, 0x00, 258 | 0x00, 0xC0, 0xE7, 0x03, 0xF8, 0x7E, 0x00, 0x00, 0x00, 0x40, 0x7C, 0x00, 259 | 0xC0, 0x47, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x67, 0x00, 0x00, 260 | 0x00, 0xE0, 0x07, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x60, 0x04, 0x00, 261 | 0x00, 0x46, 0x00, 0x00, 0x00, 0x60, 0x0C, 0xFE, 0x07, 0x66, 0x00, 0x00, 262 | 0x00, 0xE0, 0x0F, 0x1E, 0x0D, 0x7E, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x06, 263 | 0x0D, 0xC6, 0x00, 0x00, 0x00, 0x70, 0x0C, 0x06, 0x0C, 0xE6, 0x01, 0x00, 264 | 0x00, 0xF8, 0x0F, 0x5E, 0x0D, 0xFE, 0x01, 0x00, 0x00, 0x68, 0xEC, 0xFF, 265 | 0xFF, 0x46, 0x03, 0x00, 0x00, 0x6C, 0x7C, 0x00, 0xC0, 0x66, 0x02, 0x00, 266 | 0x00, 0xE4, 0x3F, 0x00, 0x80, 0x7F, 0x06, 0x00, 0x00, 0x64, 0x2C, 0x42, 267 | 0x85, 0x46, 0x04, 0x00, 0x00, 0x66, 0x2C, 0x5E, 0x8D, 0x66, 0x0C, 0x00, 268 | 0x00, 0xE6, 0x2F, 0x52, 0x85, 0x7E, 0x0C, 0x00, 0x00, 0x62, 0x2C, 0x00, 269 | 0x80, 0x46, 0x08, 0x00, 0x00, 0x62, 0x2C, 0x00, 0x80, 0x46, 0x08, 0x00, 270 | 0x00, 0xE3, 0x2F, 0xFE, 0x87, 0x7E, 0x08, 0x00, 0x00, 0x63, 0x2C, 0x5E, 271 | 0x8D, 0x46, 0x08, 0x00, 0x00, 0x63, 0x2C, 0x5E, 0x8D, 0x46, 0x08, 0x00, 272 | 0x00, 0xE3, 0x2F, 0x5E, 0x8D, 0x7E, 0x08, 0x00, 0x00, 0x63, 0x2C, 0x5E, 273 | 0x8D, 0x42, 0x08, 0x00, 0x00, 0x62, 0x2C, 0x5E, 0x8D, 0x46, 0x08, 0x00, 274 | 0x00, 0xE2, 0x2F, 0x5E, 0x8D, 0x7E, 0x0C, 0x00, 0x00, 0x66, 0x2C, 0x5E, 275 | 0x8D, 0xC2, 0x0C, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 276 | 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0xF8, 0xFF, 277 | 0xFF, 0x03, 0x06, 0x00, 0x00, 0x0C, 0xDC, 0xFF, 0x3F, 0x03, 0x02, 0x00, 278 | 0x00, 0x18, 0x9C, 0xFF, 0x3F, 0x07, 0x03, 0x00, 0x00, 0x18, 0x9E, 0xFF, 279 | 0xBF, 0x0F, 0x01, 0x00, 0x00, 0x30, 0x12, 0x00, 0x80, 0x8D, 0x01, 0x00, 280 | 0x00, 0xE0, 0xD3, 0xFF, 0xFD, 0xFD, 0x00, 0x00, 0x00, 0xC0, 0xD2, 0x1E, 281 | 0xED, 0x6D, 0x00, 0x00, 0x00, 0xC0, 0xD3, 0x1E, 0xED, 0x3D, 0x00, 0x00, 282 | 0x00, 0x80, 0xD3, 0x1E, 0xED, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xD6, 0x1E, 283 | 0xED, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x1E, 0xED, 0x07, 0x00, 0x00, 284 | 0x00, 0x00, 0xF8, 0x1E, 0xED, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 285 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 286 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 287 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 288 | }; 289 | #define london_width 60 290 | #define london_height 60 291 | const char london_bits[] PROGMEM= { 292 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 293 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 294 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 295 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 296 | 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 297 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 298 | 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 299 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 300 | 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 301 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x00, 302 | 0x00, 0x00, 0xE0, 0x5F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFE, 303 | 0xCF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xB6, 0x0D, 0x07, 0x00, 0x00, 304 | 0x00, 0x00, 0x07, 0x02, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x81, 0x03, 305 | 0x38, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x4B, 0x3A, 0x70, 0x00, 0x00, 306 | 0x00, 0x60, 0x80, 0x01, 0x30, 0x60, 0x00, 0x00, 0x00, 0x20, 0x80, 0xFF, 307 | 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x80, 0xFF, 0x3F, 0x80, 0x01, 0x00, 308 | 0x00, 0x18, 0x80, 0x00, 0x30, 0x00, 0x01, 0x00, 0x00, 0x08, 0x80, 0x5E, 309 | 0x3D, 0x00, 0x03, 0x00, 0x00, 0x0C, 0xE0, 0xFF, 0xFF, 0x00, 0x02, 0x00, 310 | 0x00, 0x04, 0x20, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x04, 0x20, 0x40, 311 | 0x80, 0x07, 0x04, 0x00, 0x00, 0x06, 0x20, 0x6C, 0x82, 0x1F, 0x0C, 0x00, 312 | 0x00, 0x06, 0x20, 0xFC, 0x83, 0x10, 0x0C, 0x00, 0x00, 0x02, 0x20, 0x0D, 313 | 0x87, 0x30, 0x0C, 0x00, 0x00, 0x02, 0x20, 0x47, 0x9C, 0x30, 0x08, 0x00, 314 | 0x00, 0x03, 0x20, 0x42, 0x8C, 0xF0, 0x09, 0x00, 0x00, 0x0F, 0x20, 0x43, 315 | 0x88, 0x00, 0x0B, 0x00, 0x00, 0x7B, 0xA0, 0xC3, 0xB9, 0x00, 0x0B, 0x00, 316 | 0x00, 0xF3, 0x20, 0x03, 0x88, 0xFF, 0x09, 0x00, 0x00, 0x83, 0x21, 0x02, 317 | 0x8C, 0xFF, 0x08, 0x00, 0x00, 0x02, 0x7F, 0x07, 0x9C, 0x00, 0x08, 0x00, 318 | 0x00, 0x02, 0x60, 0x0D, 0x87, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x40, 0xFC, 319 | 0x83, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x60, 0x6C, 0x82, 0x00, 0x0C, 0x00, 320 | 0x00, 0xFC, 0x7F, 0x40, 0x80, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x20, 0x00, 321 | 0x80, 0x00, 0x06, 0x00, 0x00, 0x0C, 0xE0, 0xFF, 0xFF, 0x00, 0x02, 0x00, 322 | 0x00, 0x18, 0x60, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x18, 0xE0, 0xFF, 323 | 0x7F, 0x00, 0x01, 0x00, 0x00, 0x30, 0xC0, 0xFF, 0x3F, 0x80, 0x01, 0x00, 324 | 0x00, 0x60, 0x80, 0x5E, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x80, 0x5E, 325 | 0x3D, 0x60, 0x00, 0x00, 0x00, 0xC0, 0x81, 0x5E, 0x3D, 0x30, 0x00, 0x00, 326 | 0x00, 0x80, 0xC3, 0xFF, 0x7F, 0x18, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xFF, 327 | 0x7F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x7F, 0x3F, 0x07, 0x00, 0x00, 328 | 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x5F, 329 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 330 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 331 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 332 | }; 333 | #define new_york_width 60 334 | #define new_york_height 60 335 | const char new_york_bits[] PROGMEM= { 336 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 337 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 338 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 339 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 340 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 341 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 342 | 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 343 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0x00, 344 | 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 345 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 346 | 0x00, 0x00, 0xE0, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1C, 347 | 0xC3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06, 0x07, 0x00, 0x00, 348 | 0x00, 0x00, 0x07, 0xFE, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x01, 0x0E, 349 | 0x0F, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x0C, 0x70, 0x00, 0x00, 350 | 0x00, 0x60, 0x00, 0xF3, 0x19, 0x60, 0x00, 0x00, 0x00, 0x20, 0x80, 0x19, 351 | 0x13, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x80, 0x0D, 0x36, 0xE0, 0x01, 0x00, 352 | 0x00, 0x18, 0x80, 0xE4, 0x36, 0x60, 0x01, 0x00, 0x00, 0x08, 0x80, 0x04, 353 | 0x36, 0x30, 0x03, 0x00, 0x00, 0x0C, 0x80, 0x04, 0x36, 0x30, 0x02, 0x00, 354 | 0x00, 0xFC, 0x81, 0xF4, 0x36, 0x1C, 0x06, 0x00, 0x00, 0x8C, 0x83, 0x04, 355 | 0x36, 0x0C, 0x04, 0x00, 0x00, 0x06, 0x86, 0x04, 0x36, 0x07, 0x0C, 0x00, 356 | 0x00, 0x06, 0x86, 0xF4, 0x36, 0x03, 0x0C, 0x00, 0x00, 0x02, 0x84, 0x04, 357 | 0xB6, 0x01, 0x0C, 0x00, 0x00, 0x02, 0x84, 0x04, 0x36, 0x03, 0x0C, 0x00, 358 | 0x00, 0x03, 0x84, 0xF4, 0x36, 0xFF, 0x0F, 0x00, 0x00, 0x03, 0x8C, 0x04, 359 | 0x36, 0x00, 0x08, 0x00, 0x00, 0x03, 0x98, 0x04, 0x36, 0x00, 0x08, 0x00, 360 | 0x00, 0x03, 0x98, 0xF4, 0x36, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x8F, 0x04, 361 | 0x36, 0x00, 0x08, 0x00, 0x00, 0xFE, 0x83, 0x04, 0x36, 0x00, 0x08, 0x00, 362 | 0x00, 0x02, 0x80, 0xF7, 0x3C, 0x00, 0x0C, 0x00, 0x00, 0x06, 0xC0, 0x00, 363 | 0x60, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x60, 0x00, 0x40, 0x00, 0x0C, 0x00, 364 | 0x00, 0x04, 0x7E, 0xF2, 0xCC, 0x0F, 0x04, 0x00, 0x00, 0x0C, 0x62, 0x00, 365 | 0x40, 0x0C, 0x06, 0x00, 0x00, 0x0C, 0x62, 0x00, 0x40, 0x0C, 0x02, 0x00, 366 | 0x00, 0x18, 0x6A, 0xF2, 0x4C, 0x0D, 0x03, 0x00, 0x00, 0x18, 0x62, 0x00, 367 | 0x40, 0x0C, 0x01, 0x00, 0x00, 0x30, 0x66, 0x00, 0xC0, 0x8C, 0x01, 0x00, 368 | 0x00, 0x60, 0x7F, 0xF2, 0xCC, 0xDF, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 369 | 0x00, 0x78, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 370 | 0x00, 0x80, 0x7B, 0xF2, 0xCC, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 371 | 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x00, 0x00, 372 | 0x00, 0x00, 0x78, 0xF2, 0xCC, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 373 | 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 374 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 375 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 376 | }; 377 | #define paris_width 60 378 | #define paris_height 60 379 | const char paris_bits[] PROGMEM= { 380 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 381 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 382 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 383 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 384 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 385 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 386 | 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 387 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 388 | 0x00, 0x00, 0x00, 0x5E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 389 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 390 | 0x00, 0x00, 0xE0, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF8, 391 | 0xC3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF0, 0x01, 0x07, 0x00, 0x00, 392 | 0x00, 0x00, 0x07, 0xF8, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x01, 0xF8, 393 | 0x01, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xF8, 0x03, 0x70, 0x00, 0x00, 394 | 0x00, 0x60, 0x00, 0xF8, 0x03, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0x58, 395 | 0x03, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x03, 0x80, 0x01, 0x00, 396 | 0x00, 0x18, 0x00, 0x58, 0xC3, 0xFF, 0x01, 0x00, 0x00, 0x08, 0x00, 0xFC, 397 | 0xF3, 0xFF, 0x03, 0x00, 0x00, 0x0C, 0x00, 0xEC, 0x16, 0x00, 0x02, 0x00, 398 | 0x00, 0x04, 0x00, 0xEC, 0x16, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0xFC, 399 | 0xF7, 0x0F, 0x04, 0x00, 0x00, 0x06, 0x00, 0xFC, 0x87, 0x07, 0x0C, 0x00, 400 | 0x00, 0xFE, 0x00, 0x4E, 0x06, 0x02, 0x0C, 0x00, 0x00, 0x82, 0x01, 0x4E, 401 | 0x06, 0x06, 0x0C, 0x00, 0x00, 0x82, 0x01, 0xFE, 0x07, 0xFC, 0x0F, 0x00, 402 | 0x00, 0xC3, 0x0F, 0xF2, 0x0D, 0x00, 0x08, 0x00, 0x00, 0xC3, 0x3F, 0xE2, 403 | 0x0C, 0x00, 0x08, 0x00, 0x00, 0x03, 0x30, 0xF2, 0x08, 0x00, 0x08, 0x00, 404 | 0x00, 0x03, 0x30, 0xF3, 0x09, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x3F, 0x5F, 405 | 0x1F, 0x00, 0x08, 0x00, 0x00, 0xFE, 0x07, 0x4F, 0x1E, 0x00, 0x08, 0x00, 406 | 0x00, 0x02, 0x00, 0x5F, 0x1F, 0x00, 0x0C, 0x00, 0x00, 0x06, 0xE0, 0xFF, 407 | 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x06, 0xE0, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 408 | 0x00, 0x04, 0xA0, 0x5E, 0xBD, 0x00, 0x04, 0x00, 0x00, 0x0C, 0xE0, 0xFF, 409 | 0xFF, 0x00, 0x06, 0x00, 0x00, 0x0C, 0xC0, 0xFF, 0x7F, 0x00, 0x02, 0x00, 410 | 0x00, 0x18, 0xC0, 0x4E, 0x6E, 0x00, 0x03, 0x00, 0x00, 0x18, 0x40, 0x4E, 411 | 0x6E, 0x00, 0x01, 0x00, 0x00, 0x30, 0x60, 0xFB, 0x5B, 0x80, 0x01, 0x00, 412 | 0x00, 0x60, 0xE0, 0xF1, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 413 | 0xF0, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xF1, 0xF1, 0xF0, 0x31, 0x00, 0x00, 414 | 0x00, 0x80, 0x33, 0xF3, 0x99, 0x19, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x5E, 415 | 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x4E, 0x06, 0x07, 0x00, 0x00, 416 | 0x00, 0x00, 0x78, 0x5F, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 417 | 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 418 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 419 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 420 | }; 421 | #define san_francisco_width 60 422 | #define san_francisco_height 60 423 | const char san_francisco_bits[] PROGMEM= { 424 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 425 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 426 | 0x00, 0x00, 0xC0, 0x03, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 427 | 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x48, 0x00, 0x00, 0x00, 428 | 0x00, 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 429 | 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0xFC, 0x01, 0x00, 0x00, 430 | 0x00, 0x00, 0xF0, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 431 | 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x01, 0x00, 0x00, 432 | 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x49, 433 | 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x49, 0x92, 0x00, 0x00, 0x00, 434 | 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFC, 435 | 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x8F, 0x03, 0x00, 0x00, 436 | 0x00, 0x00, 0x2E, 0x03, 0x9C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x23, 0x03, 437 | 0x98, 0x18, 0x00, 0x00, 0x00, 0x80, 0x21, 0x03, 0x90, 0x38, 0x00, 0x00, 438 | 0x00, 0xC0, 0x20, 0x07, 0x90, 0x79, 0x00, 0x00, 0x00, 0x60, 0x20, 0x07, 439 | 0x90, 0xCD, 0x00, 0x00, 0x00, 0x30, 0x20, 0x05, 0x90, 0x89, 0x01, 0x00, 440 | 0x00, 0x10, 0x20, 0x0D, 0x90, 0xF9, 0x01, 0x00, 0x00, 0x18, 0x20, 0xFF, 441 | 0x9F, 0x03, 0x03, 0x00, 0x00, 0x0C, 0x20, 0xFF, 0x9F, 0x03, 0x02, 0x00, 442 | 0x00, 0x0C, 0x20, 0x00, 0x80, 0x06, 0x06, 0x00, 0x00, 0x04, 0x20, 0x49, 443 | 0x92, 0x06, 0x06, 0x00, 0x00, 0x06, 0x20, 0x49, 0x92, 0x0C, 0x04, 0x00, 444 | 0x00, 0x06, 0x20, 0x00, 0x80, 0x0C, 0x0C, 0x00, 0x00, 0x02, 0x20, 0xFC, 445 | 0x87, 0x0C, 0x0C, 0x00, 0x00, 0x02, 0x20, 0xFE, 0x8F, 0x1C, 0x0C, 0x00, 446 | 0x00, 0xFE, 0x21, 0xCF, 0x9C, 0x34, 0x0E, 0x00, 0x00, 0x03, 0x23, 0xC9, 447 | 0x98, 0x34, 0x0E, 0x00, 0x00, 0x03, 0x22, 0xC9, 0x91, 0x64, 0x0A, 0x00, 448 | 0x00, 0x03, 0xB3, 0xC9, 0x93, 0xE4, 0x0B, 0x00, 0x00, 0x83, 0xFF, 0x4B, 449 | 0x93, 0xE4, 0x09, 0x00, 0x00, 0x02, 0x00, 0x4E, 0x9E, 0xE4, 0x0B, 0x00, 450 | 0x00, 0x02, 0x00, 0x4E, 0x9E, 0xF4, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0x4F, 451 | 0x9A, 0x3F, 0x0D, 0x00, 0x00, 0xFE, 0xFF, 0x49, 0x92, 0x3F, 0x0D, 0x00, 452 | 0x00, 0x06, 0x20, 0x6D, 0x9B, 0x24, 0x05, 0x00, 0x00, 0x04, 0x20, 0xFF, 453 | 0x9F, 0x24, 0x07, 0x00, 0x00, 0x0C, 0x20, 0x00, 0x80, 0x24, 0x07, 0x00, 454 | 0x00, 0x08, 0x20, 0x49, 0x92, 0x24, 0x03, 0x00, 0x00, 0x18, 0x20, 0x49, 455 | 0x92, 0x24, 0x03, 0x00, 0x00, 0x30, 0x20, 0x49, 0x92, 0xA4, 0x01, 0x00, 456 | 0x00, 0x30, 0x20, 0x00, 0x80, 0xE4, 0x00, 0x00, 0x00, 0x60, 0x20, 0xFE, 457 | 0x8F, 0xE4, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x4F, 0x9E, 0x64, 0x00, 0x00, 458 | 0x00, 0x80, 0x21, 0x4F, 0x9A, 0x34, 0x00, 0x00, 0x00, 0x00, 0x23, 0x49, 459 | 0x92, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x49, 0x92, 0x0E, 0x00, 0x00, 460 | 0x00, 0x00, 0x38, 0x49, 0xD2, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x49, 461 | 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 462 | 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 463 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 464 | }; 465 | #define stockholm_width 60 466 | #define stockholm_height 60 467 | const char stockholm_bits[] PROGMEM= { 468 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 469 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 470 | 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 471 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0C, 0x00, 0x00, 0x00, 472 | 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 473 | 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0x00, 474 | 0x00, 0x00, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 475 | 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 476 | 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 477 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 478 | 0x00, 0x00, 0xE0, 0xF3, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x98, 479 | 0xC3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x07, 0x07, 0x00, 0x00, 480 | 0x00, 0x00, 0x07, 0xFE, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x01, 0x06, 481 | 0x06, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xFC, 0x07, 0x70, 0x00, 0x00, 482 | 0x00, 0x60, 0x00, 0x04, 0x06, 0x60, 0x00, 0x00, 0x00, 0x20, 0x00, 0xF4, 483 | 0x06, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x00, 0xF4, 0x07, 0x80, 0x01, 0x00, 484 | 0x00, 0x18, 0x00, 0xB4, 0x07, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0xB4, 485 | 0x07, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0xB4, 0x07, 0x00, 0x02, 0x00, 486 | 0x00, 0x0C, 0x00, 0xFC, 0x07, 0x00, 0x06, 0x00, 0x00, 0xFC, 0xFF, 0x1F, 487 | 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF6, 0xFF, 0xFE, 0xEE, 0xFF, 0x0F, 0x00, 488 | 0x00, 0x06, 0x00, 0xB6, 0x05, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x1F, 489 | 0x1D, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x13, 0x19, 0x00, 0x08, 0x00, 490 | 0x00, 0x03, 0x00, 0xF1, 0x11, 0x00, 0x08, 0x00, 0x00, 0x03, 0x00, 0x61, 491 | 0x10, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x08, 0x01, 0x10, 0x01, 0x0E, 0x00, 492 | 0x00, 0x0F, 0x18, 0xF9, 0x11, 0x03, 0x0E, 0x00, 0x00, 0x1B, 0x3C, 0x19, 493 | 0x91, 0x07, 0x0B, 0x00, 0x00, 0x1A, 0xBC, 0x19, 0xF1, 0x07, 0x09, 0x00, 494 | 0x00, 0x12, 0xE4, 0x18, 0xF1, 0x04, 0x0D, 0x00, 0x00, 0x16, 0x24, 0x18, 495 | 0x81, 0x04, 0x0D, 0x00, 0x00, 0x1E, 0x36, 0x18, 0xC3, 0x86, 0x0D, 0x00, 496 | 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x5C, 0xAF, 0x5E, 497 | 0xBD, 0x7A, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 498 | 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 499 | 0x00, 0x00, 0x01, 0x00, 0x00, 0x30, 0xDF, 0xF3, 0x3D, 0x9F, 0x01, 0x00, 500 | 0x00, 0xE0, 0xD1, 0x1E, 0xED, 0xD1, 0x00, 0x00, 0x00, 0xE0, 0xD1, 0x1E, 501 | 0xED, 0x71, 0x00, 0x00, 0x00, 0xC0, 0xD1, 0x1F, 0xFD, 0x31, 0x00, 0x00, 502 | 0x00, 0x80, 0x13, 0x18, 0x81, 0x19, 0x00, 0x00, 0x00, 0x00, 0x96, 0x1B, 503 | 0xB9, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x1B, 0xBD, 0x07, 0x00, 0x00, 504 | 0x00, 0x00, 0xF8, 0x1E, 0xED, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 505 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 508 | }; 509 | #define sydney_width 60 510 | #define sydney_height 60 511 | const char sydney_bits[] PROGMEM= { 512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 513 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 514 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 515 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, 0x00, 516 | 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 517 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x05, 0x00, 0x00, 0x00, 518 | 0x00, 0x00, 0x00, 0xFB, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 519 | 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4D, 0x36, 0x00, 0x00, 0x00, 520 | 0x00, 0x00, 0xC0, 0xF6, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xBE, 521 | 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0x5E, 0x00, 0x00, 0x00, 522 | 0x00, 0x00, 0x60, 0xF3, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x5D, 523 | 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x46, 0xEE, 0x0F, 0x00, 0x00, 524 | 0x00, 0x00, 0x73, 0x43, 0xDC, 0x1D, 0x00, 0x00, 0x00, 0x80, 0xB1, 0x43, 525 | 0xBC, 0x31, 0x00, 0x00, 0x00, 0xC0, 0xD8, 0xF6, 0xE4, 0x61, 0x00, 0x00, 526 | 0x00, 0x60, 0x78, 0xBC, 0xC7, 0xC3, 0x00, 0x00, 0x00, 0x30, 0x7C, 0x6E, 527 | 0xEE, 0x87, 0x00, 0x00, 0x00, 0x30, 0xF4, 0xFB, 0xBD, 0x87, 0x01, 0x00, 528 | 0x00, 0x18, 0xDE, 0x5D, 0x37, 0x0F, 0x03, 0x00, 0x00, 0x08, 0xFE, 0x4F, 529 | 0xFE, 0x0F, 0x03, 0x00, 0x00, 0x0C, 0xBF, 0x4B, 0xFA, 0x0F, 0x06, 0x00, 530 | 0x00, 0x04, 0xDF, 0x49, 0xF2, 0x1F, 0x06, 0x00, 0x00, 0x06, 0xEF, 0x49, 531 | 0xF2, 0x1E, 0x04, 0x00, 0x00, 0x06, 0x37, 0x49, 0x92, 0x1D, 0x0C, 0x00, 532 | 0x00, 0x02, 0x3B, 0x49, 0x92, 0x19, 0x0C, 0x00, 0x00, 0x82, 0x39, 0x49, 533 | 0x92, 0x1B, 0x08, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0xFF, 0x3F, 0x08, 0x00, 534 | 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0x3F, 0x08, 0x00, 0x00, 0x83, 0xFF, 0xED, 535 | 0xF6, 0x1F, 0x08, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0x1F, 0x08, 0x00, 536 | 0x00, 0x03, 0x03, 0x00, 0x00, 0x18, 0x08, 0x00, 0x00, 0x02, 0xFB, 0xFF, 537 | 0xFF, 0x1B, 0x08, 0x00, 0x00, 0x02, 0x0F, 0x00, 0x00, 0x1B, 0x08, 0x00, 538 | 0x00, 0xC2, 0xFF, 0xFF, 0xFF, 0x7F, 0x0C, 0x00, 0x00, 0xC6, 0xFF, 0xFF, 539 | 0xFF, 0x7F, 0x0C, 0x00, 0x00, 0x46, 0xAF, 0x5E, 0xBD, 0x7A, 0x04, 0x00, 540 | 0x00, 0x44, 0xAF, 0x5E, 0xBD, 0x7A, 0x06, 0x00, 0x00, 0x4C, 0xAF, 0x5E, 541 | 0xBD, 0x7A, 0x06, 0x00, 0x00, 0x4C, 0xAF, 0x5E, 0xBD, 0x7A, 0x02, 0x00, 542 | 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 543 | 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x30, 0x21, 0x42, 0x84, 0x88, 0x01, 0x00, 544 | 0x00, 0x60, 0x33, 0x66, 0xCC, 0xD8, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 545 | 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xCD, 0x99, 0x33, 0x37, 0x00, 0x00, 546 | 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 547 | 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x80, 0x03, 0x00, 0x00, 548 | 0x00, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 549 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 550 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 551 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 552 | }; 553 | #define tokyo_width 60 554 | #define tokyo_height 60 555 | const char tokyo_bits[] PROGMEM= { 556 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 557 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 559 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 560 | 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 561 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 562 | 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 563 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xBE, 0x47, 0x00, 0x00, 0x00, 564 | 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 565 | 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x00, 0x00, 566 | 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 567 | 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x02, 0x07, 0x00, 0x00, 568 | 0x00, 0x00, 0x07, 0xFC, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x80, 0x03, 0xFE, 569 | 0x0F, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x10, 0x5E, 0x8D, 0x71, 0x00, 0x00, 570 | 0x00, 0x60, 0xF0, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x60, 0xF0, 0xFF, 571 | 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x80, 0x81, 0x01, 0x00, 572 | 0x00, 0x18, 0xE0, 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x08, 0xC0, 0xFF, 573 | 0x7F, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x1B, 0x09, 0x00, 0x06, 0x00, 574 | 0x00, 0x0C, 0x80, 0xFF, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x06, 0x80, 0xFF, 575 | 0x3F, 0x00, 0x04, 0x00, 0x00, 0x06, 0x8C, 0x5E, 0x3D, 0x02, 0x0C, 0x00, 576 | 0x00, 0x06, 0xFC, 0xFF, 0xFF, 0x03, 0x0C, 0x00, 0x00, 0x02, 0xFC, 0xFF, 577 | 0xFF, 0x03, 0x0C, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x03, 0x08, 0x00, 578 | 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0x01, 0x08, 0x00, 0x00, 0x03, 0xE0, 0xFF, 579 | 0xFF, 0x00, 0x08, 0x00, 0x00, 0x03, 0xC0, 0x18, 0x31, 0x00, 0x18, 0x00, 580 | 0x00, 0x03, 0xE0, 0xFF, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x03, 0xE0, 0xFF, 581 | 0xFF, 0x00, 0x08, 0x00, 0x00, 0x02, 0xA2, 0x5E, 0xBD, 0x0C, 0x08, 0x00, 582 | 0x00, 0x02, 0xFE, 0xFF, 0xFF, 0x0F, 0x0C, 0x00, 0x00, 0x06, 0xFE, 0xFF, 583 | 0xFF, 0x0F, 0x0C, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x0C, 0x0C, 0x00, 584 | 0x00, 0xC4, 0xFC, 0xFF, 0xFF, 0x37, 0x04, 0x00, 0x00, 0xEC, 0xF9, 0xFF, 585 | 0xFF, 0x7B, 0x06, 0x00, 0x00, 0x6C, 0x63, 0x18, 0x61, 0xD8, 0x02, 0x00, 586 | 0x00, 0xF8, 0xF9, 0xFF, 0xFF, 0x7B, 0x03, 0x00, 0x00, 0xD8, 0xFD, 0xFF, 587 | 0xFF, 0x73, 0x01, 0x00, 0x00, 0xB0, 0xAC, 0x5E, 0xBD, 0xA2, 0x01, 0x00, 588 | 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 589 | 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 590 | 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 591 | 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x06, 0xBC, 0x07, 0x00, 0x00, 592 | 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 593 | 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 594 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 595 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 596 | }; 597 | #define wellington_width 60 598 | #define wellington_height 60 599 | const char wellington_bits[] PROGMEM= { 600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 601 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 602 | 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 603 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0C, 0x00, 0x00, 0x00, 604 | 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 605 | 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0x00, 606 | 0x00, 0x00, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 607 | 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 608 | 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 609 | 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x19, 0x00, 0x00, 0x00, 610 | 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 611 | 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x58, 0x81, 0x07, 0x00, 0x00, 612 | 0x00, 0x00, 0x1F, 0x58, 0x81, 0x0F, 0x00, 0x00, 0x00, 0x80, 0x19, 0x58, 613 | 0x01, 0x3B, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0xF8, 0x03, 0x77, 0x00, 0x00, 614 | 0x00, 0x60, 0xFC, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x20, 0x24, 0x08, 615 | 0x82, 0xC4, 0x00, 0x00, 0x00, 0x30, 0x24, 0x08, 0x82, 0x84, 0x01, 0x00, 616 | 0x00, 0x18, 0xFE, 0xFF, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x08, 0xFF, 0xFF, 617 | 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x0C, 0xAF, 0x5E, 0xBD, 0x1A, 0x02, 0x00, 618 | 0x00, 0x04, 0xAF, 0x5E, 0xBD, 0x1A, 0x06, 0x00, 0x00, 0x04, 0xA3, 0x40, 619 | 0x81, 0x1A, 0x04, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x18, 0x0C, 0x00, 620 | 0x00, 0xC6, 0xFF, 0xFF, 0xFF, 0x7F, 0x0C, 0x00, 0x00, 0x42, 0xAF, 0x5E, 621 | 0xBD, 0x7A, 0x0C, 0x00, 0x00, 0x42, 0xAF, 0x5E, 0xBD, 0x7A, 0x08, 0x00, 622 | 0x00, 0x43, 0xA9, 0x52, 0xA5, 0x6A, 0x08, 0x00, 0x00, 0x43, 0x00, 0x00, 623 | 0x00, 0x60, 0x08, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 624 | 0x00, 0x53, 0xAF, 0x5E, 0xBD, 0x7A, 0x09, 0x00, 0x00, 0x53, 0xAF, 0x5E, 625 | 0xBD, 0x7A, 0x09, 0x00, 0x00, 0x52, 0xAF, 0x5E, 0xBD, 0x7A, 0x09, 0x00, 626 | 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 627 | 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 628 | 0x00, 0x5C, 0xAF, 0x5E, 0xBD, 0x7A, 0x07, 0x00, 0x00, 0x5C, 0xAF, 0x5E, 629 | 0xBD, 0x7A, 0x07, 0x00, 0x00, 0x0C, 0x83, 0x40, 0x30, 0x18, 0x03, 0x00, 630 | 0x00, 0x18, 0x83, 0x40, 0x30, 0x18, 0x03, 0x00, 0x00, 0x18, 0x83, 0x40, 631 | 0x30, 0x18, 0x01, 0x00, 0x00, 0x30, 0x83, 0x40, 0x30, 0x98, 0x01, 0x00, 632 | 0x00, 0x60, 0x83, 0x40, 0x30, 0xD8, 0x00, 0x00, 0x00, 0xE0, 0x83, 0x40, 633 | 0x30, 0x78, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x40, 0x30, 0x38, 0x00, 0x00, 634 | 0x00, 0x80, 0x83, 0x40, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x86, 0x40, 635 | 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x40, 0x30, 0x07, 0x00, 0x00, 636 | 0x00, 0x00, 0xF8, 0x40, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x47, 637 | 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 638 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 639 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 640 | }; 641 | -------------------------------------------------------------------------------- /Sketches/OLED/WorldClock/fonts.h: -------------------------------------------------------------------------------- 1 | #define FONT_LIB_V3 2 | // Created by http://oleddisplay.squix.ch/ Consider a donation 3 | // In case of problems make sure that you are using the font file with the correct version! 4 | const char Crushed_Plain_36[] PROGMEM = { 5 | 0x1B, // Width: 27 6 | 0x2A, // Height: 42 7 | 0x20, // First Char: 32 8 | 0xE0, // Numbers of Chars: 224 9 | 10 | // Jump Table: 11 | 0xFF, 0xFF, 0x00, 0x07, // 32:65535 12 | 0x00, 0x00, 0x1D, 0x07, // 33:0 13 | 0x00, 0x1D, 0x26, 0x08, // 34:29 14 | 0x00, 0x43, 0x56, 0x10, // 35:67 15 | 0x00, 0x99, 0x46, 0x0D, // 36:153 16 | 0x00, 0xDF, 0x6A, 0x13, // 37:223 17 | 0x01, 0x49, 0x5F, 0x11, // 38:329 18 | 0x01, 0xA8, 0x0E, 0x04, // 39:424 19 | 0x01, 0xB6, 0x35, 0x0A, // 40:438 20 | 0x01, 0xEB, 0x2E, 0x0A, // 41:491 21 | 0x02, 0x19, 0x32, 0x0B, // 42:537 22 | 0x02, 0x4B, 0x63, 0x14, // 43:587 23 | 0x02, 0xAE, 0x17, 0x05, // 44:686 24 | 0x02, 0xC5, 0x33, 0x0B, // 45:709 25 | 0x02, 0xF8, 0x17, 0x05, // 46:760 26 | 0x03, 0x0F, 0x2C, 0x09, // 47:783 27 | 0x03, 0x3B, 0x52, 0x0F, // 48:827 28 | 0x03, 0x8D, 0x23, 0x09, // 49:909 29 | 0x03, 0xB0, 0x47, 0x0D, // 50:944 30 | 0x03, 0xF7, 0x4C, 0x0E, // 51:1015 31 | 0x04, 0x43, 0x58, 0x10, // 52:1091 32 | 0x04, 0x9B, 0x46, 0x0D, // 53:1179 33 | 0x04, 0xE1, 0x52, 0x0F, // 54:1249 34 | 0x05, 0x33, 0x44, 0x0D, // 55:1331 35 | 0x05, 0x77, 0x52, 0x0F, // 56:1399 36 | 0x05, 0xC9, 0x52, 0x0F, // 57:1481 37 | 0x06, 0x1B, 0x17, 0x05, // 58:1563 38 | 0x06, 0x32, 0x17, 0x05, // 59:1586 39 | 0x06, 0x49, 0x6A, 0x14, // 60:1609 40 | 0x06, 0xB3, 0x64, 0x14, // 61:1715 41 | 0x07, 0x17, 0x69, 0x14, // 62:1815 42 | 0x07, 0x80, 0x38, 0x0B, // 63:1920 43 | 0x07, 0xB8, 0x93, 0x1B, // 64:1976 44 | 0x08, 0x4B, 0x53, 0x0F, // 65:2123 45 | 0x08, 0x9E, 0x52, 0x0F, // 66:2206 46 | 0x08, 0xF0, 0x53, 0x0F, // 67:2288 47 | 0x09, 0x43, 0x5E, 0x11, // 68:2371 48 | 0x09, 0xA1, 0x47, 0x0D, // 69:2465 49 | 0x09, 0xE8, 0x44, 0x0C, // 70:2536 50 | 0x0A, 0x2C, 0x58, 0x11, // 71:2604 51 | 0x0A, 0x84, 0x59, 0x11, // 72:2692 52 | 0x0A, 0xDD, 0x1D, 0x07, // 73:2781 53 | 0x0A, 0xFA, 0x34, 0x0B, // 74:2810 54 | 0x0B, 0x2E, 0x59, 0x0F, // 75:2862 55 | 0x0B, 0x87, 0x47, 0x0D, // 76:2951 56 | 0x0B, 0xCE, 0x71, 0x15, // 77:3022 57 | 0x0C, 0x3F, 0x59, 0x11, // 78:3135 58 | 0x0C, 0x98, 0x5E, 0x11, // 79:3224 59 | 0x0C, 0xF6, 0x51, 0x0F, // 80:3318 60 | 0x0D, 0x47, 0x5F, 0x11, // 81:3399 61 | 0x0D, 0xA6, 0x59, 0x0F, // 82:3494 62 | 0x0D, 0xFF, 0x4C, 0x0E, // 83:3583 63 | 0x0E, 0x4B, 0x4A, 0x0E, // 84:3659 64 | 0x0E, 0x95, 0x58, 0x11, // 85:3733 65 | 0x0E, 0xED, 0x50, 0x0F, // 86:3821 66 | 0x0F, 0x3D, 0x80, 0x17, // 87:3901 67 | 0x0F, 0xBD, 0x53, 0x0E, // 88:4029 68 | 0x10, 0x10, 0x4A, 0x0D, // 89:4112 69 | 0x10, 0x5A, 0x4D, 0x0E, // 90:4186 70 | 0x10, 0xA7, 0x3B, 0x0A, // 91:4263 71 | 0x10, 0xE2, 0x2F, 0x09, // 92:4322 72 | 0x11, 0x11, 0x2F, 0x0A, // 93:4369 73 | 0x11, 0x40, 0x3F, 0x0D, // 94:4416 74 | 0x11, 0x7F, 0x4D, 0x0D, // 95:4479 75 | 0x11, 0xCC, 0x20, 0x0A, // 96:4556 76 | 0x11, 0xEC, 0x53, 0x10, // 97:4588 77 | 0x12, 0x3F, 0x58, 0x10, // 98:4671 78 | 0x12, 0x97, 0x53, 0x0F, // 99:4759 79 | 0x12, 0xEA, 0x5E, 0x11, // 100:4842 80 | 0x13, 0x48, 0x57, 0x10, // 101:4936 81 | 0x13, 0x9F, 0x4A, 0x0D, // 102:5023 82 | 0x13, 0xE9, 0x58, 0x11, // 103:5097 83 | 0x14, 0x41, 0x59, 0x11, // 104:5185 84 | 0x14, 0x9A, 0x1D, 0x07, // 105:5274 85 | 0x14, 0xB7, 0x34, 0x0B, // 106:5303 86 | 0x14, 0xEB, 0x59, 0x0F, // 107:5355 87 | 0x15, 0x44, 0x47, 0x0D, // 108:5444 88 | 0x15, 0x8B, 0x89, 0x19, // 109:5515 89 | 0x16, 0x14, 0x59, 0x11, // 110:5652 90 | 0x16, 0x6D, 0x5E, 0x11, // 111:5741 91 | 0x16, 0xCB, 0x51, 0x0F, // 112:5835 92 | 0x17, 0x1C, 0x5F, 0x11, // 113:5916 93 | 0x17, 0x7B, 0x44, 0x0C, // 114:6011 94 | 0x17, 0xBF, 0x4C, 0x0E, // 115:6079 95 | 0x18, 0x0B, 0x4A, 0x0E, // 116:6155 96 | 0x18, 0x55, 0x59, 0x11, // 117:6229 97 | 0x18, 0xAE, 0x50, 0x0F, // 118:6318 98 | 0x18, 0xFE, 0x80, 0x17, // 119:6398 99 | 0x19, 0x7E, 0x53, 0x0E, // 120:6526 100 | 0x19, 0xD1, 0x50, 0x0E, // 121:6609 101 | 0x1A, 0x21, 0x4D, 0x0E, // 122:6689 102 | 0x1A, 0x6E, 0x47, 0x0D, // 123:6766 103 | 0x1A, 0xB5, 0x24, 0x09, // 124:6837 104 | 0x1A, 0xD9, 0x45, 0x0C, // 125:6873 105 | 0x1B, 0x1E, 0x69, 0x14, // 126:6942 106 | 0xFF, 0xFF, 0x00, 0x07, // 127:65535 107 | 0xFF, 0xFF, 0x00, 0x07, // 128:65535 108 | 0xFF, 0xFF, 0x00, 0x07, // 129:65535 109 | 0xFF, 0xFF, 0x00, 0x07, // 130:65535 110 | 0xFF, 0xFF, 0x00, 0x07, // 131:65535 111 | 0xFF, 0xFF, 0x00, 0x07, // 132:65535 112 | 0xFF, 0xFF, 0x00, 0x07, // 133:65535 113 | 0xFF, 0xFF, 0x00, 0x07, // 134:65535 114 | 0xFF, 0xFF, 0x00, 0x07, // 135:65535 115 | 0xFF, 0xFF, 0x00, 0x07, // 136:65535 116 | 0xFF, 0xFF, 0x00, 0x07, // 137:65535 117 | 0xFF, 0xFF, 0x00, 0x07, // 138:65535 118 | 0xFF, 0xFF, 0x00, 0x07, // 139:65535 119 | 0xFF, 0xFF, 0x00, 0x07, // 140:65535 120 | 0xFF, 0xFF, 0x00, 0x07, // 141:65535 121 | 0xFF, 0xFF, 0x00, 0x07, // 142:65535 122 | 0xFF, 0xFF, 0x00, 0x07, // 143:65535 123 | 0xFF, 0xFF, 0x00, 0x07, // 144:65535 124 | 0xFF, 0xFF, 0x00, 0x07, // 145:65535 125 | 0xFF, 0xFF, 0x00, 0x07, // 146:65535 126 | 0xFF, 0xFF, 0x00, 0x07, // 147:65535 127 | 0xFF, 0xFF, 0x00, 0x07, // 148:65535 128 | 0xFF, 0xFF, 0x00, 0x07, // 149:65535 129 | 0xFF, 0xFF, 0x00, 0x07, // 150:65535 130 | 0xFF, 0xFF, 0x00, 0x07, // 151:65535 131 | 0xFF, 0xFF, 0x00, 0x07, // 152:65535 132 | 0xFF, 0xFF, 0x00, 0x07, // 153:65535 133 | 0xFF, 0xFF, 0x00, 0x07, // 154:65535 134 | 0xFF, 0xFF, 0x00, 0x07, // 155:65535 135 | 0xFF, 0xFF, 0x00, 0x07, // 156:65535 136 | 0xFF, 0xFF, 0x00, 0x07, // 157:65535 137 | 0xFF, 0xFF, 0x00, 0x07, // 158:65535 138 | 0xFF, 0xFF, 0x00, 0x07, // 159:65535 139 | 0xFF, 0xFF, 0x00, 0x07, // 160:65535 140 | 0x1B, 0x87, 0x1D, 0x07, // 161:7047 141 | 0x1B, 0xA4, 0x52, 0x0F, // 162:7076 142 | 0x1B, 0xF6, 0x4D, 0x0E, // 163:7158 143 | 0x1C, 0x43, 0x52, 0x10, // 164:7235 144 | 0x1C, 0x95, 0x50, 0x0F, // 165:7317 145 | 0x1C, 0xE5, 0x23, 0x09, // 166:7397 146 | 0x1D, 0x08, 0x4B, 0x0F, // 167:7432 147 | 0x1D, 0x53, 0x2C, 0x09, // 168:7507 148 | 0x1D, 0x7F, 0x8D, 0x1A, // 169:7551 149 | 0x1E, 0x0C, 0x2E, 0x09, // 170:7692 150 | 0x1E, 0x3A, 0x46, 0x0D, // 171:7738 151 | 0x1E, 0x80, 0x5D, 0x13, // 172:7808 152 | 0x1E, 0xDD, 0x33, 0x0B, // 173:7901 153 | 0x1F, 0x10, 0x5D, 0x11, // 174:7952 154 | 0x1F, 0x6D, 0x2C, 0x0A, // 175:8045 155 | 0x1F, 0x99, 0x2C, 0x09, // 176:8089 156 | 0x1F, 0xC5, 0x64, 0x14, // 177:8133 157 | 0x20, 0x29, 0x33, 0x0A, // 178:8233 158 | 0x20, 0x5C, 0x33, 0x0A, // 179:8284 159 | 0x20, 0x8F, 0x32, 0x0A, // 180:8335 160 | 0x20, 0xC1, 0x57, 0x0F, // 181:8385 161 | 0x21, 0x18, 0x53, 0x11, // 182:8472 162 | 0x21, 0x6B, 0x15, 0x05, // 183:8555 163 | 0x21, 0x80, 0x29, 0x0A, // 184:8576 164 | 0x21, 0xA9, 0x1B, 0x07, // 185:8617 165 | 0x21, 0xC4, 0x34, 0x0A, // 186:8644 166 | 0x21, 0xF8, 0x45, 0x0D, // 187:8696 167 | 0x22, 0x3D, 0x5E, 0x11, // 188:8765 168 | 0x22, 0x9B, 0x5F, 0x11, // 189:8859 169 | 0x22, 0xFA, 0x6A, 0x13, // 190:8954 170 | 0x23, 0x64, 0x40, 0x0C, // 191:9060 171 | 0x23, 0xA4, 0x53, 0x0F, // 192:9124 172 | 0x23, 0xF7, 0x53, 0x0F, // 193:9207 173 | 0x24, 0x4A, 0x53, 0x0F, // 194:9290 174 | 0x24, 0x9D, 0x59, 0x0F, // 195:9373 175 | 0x24, 0xF6, 0x59, 0x0F, // 196:9462 176 | 0x25, 0x4F, 0x53, 0x0E, // 197:9551 177 | 0x25, 0xA2, 0x71, 0x14, // 198:9634 178 | 0x26, 0x13, 0x53, 0x0F, // 199:9747 179 | 0x26, 0x66, 0x47, 0x0D, // 200:9830 180 | 0x26, 0xAD, 0x47, 0x0D, // 201:9901 181 | 0x26, 0xF4, 0x47, 0x0D, // 202:9972 182 | 0x27, 0x3B, 0x47, 0x0D, // 203:10043 183 | 0x27, 0x82, 0x1D, 0x07, // 204:10114 184 | 0x27, 0x9F, 0x25, 0x07, // 205:10143 185 | 0x27, 0xC4, 0x25, 0x07, // 206:10180 186 | 0x27, 0xE9, 0x2B, 0x08, // 207:10217 187 | 0x28, 0x14, 0x5E, 0x11, // 208:10260 188 | 0x28, 0x72, 0x59, 0x11, // 209:10354 189 | 0x28, 0xCB, 0x5E, 0x11, // 210:10443 190 | 0x29, 0x29, 0x5E, 0x11, // 211:10537 191 | 0x29, 0x87, 0x5E, 0x11, // 212:10631 192 | 0x29, 0xE5, 0x5E, 0x11, // 213:10725 193 | 0x2A, 0x43, 0x5E, 0x11, // 214:10819 194 | 0x2A, 0xA1, 0x5E, 0x14, // 215:10913 195 | 0x2A, 0xFF, 0x5E, 0x11, // 216:11007 196 | 0x2B, 0x5D, 0x58, 0x11, // 217:11101 197 | 0x2B, 0xB5, 0x58, 0x11, // 218:11189 198 | 0x2C, 0x0D, 0x58, 0x11, // 219:11277 199 | 0x2C, 0x65, 0x58, 0x11, // 220:11365 200 | 0x2C, 0xBD, 0x4A, 0x0D, // 221:11453 201 | 0x2D, 0x07, 0x51, 0x0F, // 222:11527 202 | 0x2D, 0x58, 0x5E, 0x11, // 223:11608 203 | 0x2D, 0xB6, 0x53, 0x10, // 224:11702 204 | 0x2E, 0x09, 0x53, 0x10, // 225:11785 205 | 0x2E, 0x5C, 0x53, 0x10, // 226:11868 206 | 0x2E, 0xAF, 0x53, 0x10, // 227:11951 207 | 0x2F, 0x02, 0x53, 0x10, // 228:12034 208 | 0x2F, 0x55, 0x53, 0x10, // 229:12117 209 | 0x2F, 0xA8, 0x8D, 0x19, // 230:12200 210 | 0x30, 0x35, 0x53, 0x0F, // 231:12341 211 | 0x30, 0x88, 0x57, 0x10, // 232:12424 212 | 0x30, 0xDF, 0x57, 0x10, // 233:12511 213 | 0x31, 0x36, 0x57, 0x10, // 234:12598 214 | 0x31, 0x8D, 0x57, 0x10, // 235:12685 215 | 0x31, 0xE4, 0x1D, 0x07, // 236:12772 216 | 0x32, 0x01, 0x25, 0x07, // 237:12801 217 | 0x32, 0x26, 0x25, 0x07, // 238:12838 218 | 0x32, 0x4B, 0x2B, 0x08, // 239:12875 219 | 0x32, 0x76, 0x5E, 0x11, // 240:12918 220 | 0x32, 0xD4, 0x59, 0x11, // 241:13012 221 | 0x33, 0x2D, 0x5E, 0x11, // 242:13101 222 | 0x33, 0x8B, 0x5E, 0x11, // 243:13195 223 | 0x33, 0xE9, 0x5E, 0x11, // 244:13289 224 | 0x34, 0x47, 0x5E, 0x11, // 245:13383 225 | 0x34, 0xA5, 0x5E, 0x11, // 246:13477 226 | 0x35, 0x03, 0x63, 0x14, // 247:13571 227 | 0x35, 0x66, 0x5E, 0x11, // 248:13670 228 | 0x35, 0xC4, 0x59, 0x11, // 249:13764 229 | 0x36, 0x1D, 0x59, 0x11, // 250:13853 230 | 0x36, 0x76, 0x59, 0x11, // 251:13942 231 | 0x36, 0xCF, 0x59, 0x11, // 252:14031 232 | 0x37, 0x28, 0x50, 0x0E, // 253:14120 233 | 0x37, 0x78, 0x51, 0x0F, // 254:14200 234 | 0x37, 0xC9, 0x50, 0x0F, // 255:14281 235 | 236 | // Font Data: 237 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC3,0x01,0x00,0x00,0xFF,0xFF,0xC3,0x01,0x00,0x00,0xFF,0xFF,0xC3,0x01, // 33 238 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x7F, // 34 239 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x60,0xC0,0x18,0x00,0x00,0x00,0x60,0xE0,0x1F,0x00,0x00,0x00,0x60,0xFF,0x0F,0x00,0x00,0x00,0xFC,0xFF,0x00,0x00,0x00,0x00,0xFF,0xC1,0x00,0x00,0x00,0x00,0x6F,0xC0,0x00,0x00,0x00,0x00,0x60,0xC0,0x1E,0x00,0x00,0x00,0x60,0xF8,0x1F,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0xFF,0xDF,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x63,0xC0,0x00,0x00,0x00,0x00,0x60, // 35 240 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xE0,0x00,0x00,0x00,0xFC,0x07,0xC0,0x01,0x00,0x00,0xFC,0x0F,0x80,0x01,0x00,0x00,0x0E,0x1E,0x80,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x06,0xF0,0xC0,0x01,0x00,0x00,0x06,0xE0,0xE1,0x00,0x00,0x00,0x0E,0xC0,0xFF,0x00,0x00,0x00,0x1E,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x3E, // 36 241 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x07,0x1C,0x00,0x00,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0xE0,0x01,0x00,0x00,0x07,0x1C,0xFC,0x00,0x00,0x00,0xFE,0x8F,0x1F,0x00,0x00,0x00,0xF8,0xE3,0x03,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0xE0,0x83,0x3F,0x00,0x00,0x00,0xF8,0xE0,0xFF,0x00,0x00,0x00,0x1F,0x70,0xC0,0x01,0x00,0x00,0x03,0x30,0x80,0x01,0x00,0x00,0x00,0x70,0xC0,0x01,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x80,0x3F, // 37 242 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0xF8,0xE3,0xFF,0x00,0x00,0x00,0xFE,0xFF,0xE1,0x01,0x00,0x00,0xFF,0x7F,0x80,0x01,0x00,0x00,0x03,0xFC,0x81,0x01,0x00,0x00,0x03,0xCF,0x87,0x01,0x00,0x00,0xFF,0x07,0x8F,0x01,0x00,0x00,0xFE,0x01,0xFE,0x00,0x00,0x00,0x7C,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xC0,0xDF,0x01,0x00,0x00,0x00,0xC0,0x87,0x01,0x00,0x00,0x00,0xC0,0x00,0x01, // 38 243 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x7F, // 39 244 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0xC0,0x7F,0x00,0xFC,0x07,0x00,0xC0,0x0F,0x00,0xC0,0x07,0x00,0xC0,0x01,0x00,0x00,0x07,0x00,0x40,0x00,0x00,0x00,0x04, // 40 245 | 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0xC0,0x01,0x00,0x00,0x07,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xC0,0x7F,0x00,0xFC,0x07,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x80,0xFF,0x03, // 41 246 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x00,0x00,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0xEE, // 42 247 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 43 248 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x00,0x00,0x80,0x03, // 44 249 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 45 250 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xC0,0x01, // 46 251 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0x80,0x03, // 47 252 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x3E,0x00,0xF8,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x3E,0x00,0xF8,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 48 253 | 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 49 254 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xC0,0x01,0x00,0x00,0x06,0x00,0xE0,0x01,0x00,0x00,0x03,0x00,0xF0,0x01,0x00,0x00,0x03,0x00,0xB8,0x01,0x00,0x00,0x03,0x00,0x9E,0x01,0x00,0x00,0x03,0x00,0x8F,0x01,0x00,0x00,0x07,0xC0,0x87,0x01,0x00,0x00,0x0E,0xF8,0x81,0x01,0x00,0x00,0xFE,0xFF,0x80,0x01,0x00,0x00,0xFC,0x3F,0x80,0x01,0x00,0x00,0xF0,0x07,0x80,0x01, // 50 255 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x03,0x00,0xC0,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x1E,0x80,0x01,0x00,0x00,0x0F,0x3F,0xC0,0x01,0x00,0x00,0xFE,0x73,0xF0,0x00,0x00,0x00,0xFC,0xF1,0x7F,0x00,0x00,0x00,0xF8,0xE0,0x3F,0x00,0x00,0x00,0x00,0x80,0x1F, // 51 256 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x3E,0x03,0x00,0x00,0x00,0xC0,0x07,0x03,0x00,0x00,0x00,0xE0,0x01,0x03,0x00,0x00,0x00,0x78,0x00,0x03,0x00,0x00,0x00,0x1E,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03, // 52 257 | 0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0x0F,0xC0,0x00,0x00,0x00,0xFF,0x0F,0xC0,0x01,0x00,0x00,0xFF,0x07,0x80,0x01,0x00,0x00,0x03,0x06,0x80,0x01,0x00,0x00,0x03,0x06,0x80,0x01,0x00,0x00,0x03,0x06,0x80,0x01,0x00,0x00,0x03,0x0E,0xC0,0x01,0x00,0x00,0x03,0x3C,0xF0,0x00,0x00,0x00,0x03,0xFC,0x7F,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0xE0,0x0F, // 53 258 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x7C,0x0C,0xF8,0x00,0x00,0x00,0x0E,0x06,0xC0,0x01,0x00,0x00,0x06,0x06,0x80,0x01,0x00,0x00,0x03,0x06,0x80,0x01,0x00,0x00,0x03,0x06,0x80,0x01,0x00,0x00,0x03,0x0E,0xC0,0x01,0x00,0x00,0x03,0x3C,0xE0,0x00,0x00,0x00,0x07,0xFC,0xFF,0x00,0x00,0x00,0x06,0xF8,0x3F,0x00,0x00,0x00,0x00,0xE0,0x0F, // 54 259 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0xFE,0x01,0x00,0x00,0x03,0xE0,0xFF,0x01,0x00,0x00,0x03,0xFC,0x7F,0x00,0x00,0x00,0x83,0xFF,0x00,0x00,0x00,0x00,0xF3,0x0F,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x03, // 55 260 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0xF8,0xE0,0x7F,0x00,0x00,0x00,0xFC,0xF3,0xFF,0x00,0x00,0x00,0xFE,0x3B,0xE0,0x00,0x00,0x00,0x07,0x1E,0xC0,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x07,0x1E,0xC0,0x01,0x00,0x00,0xFE,0x3B,0xE0,0x00,0x00,0x00,0xFC,0xF3,0xFF,0x00,0x00,0x00,0xF8,0xE0,0x7F,0x00,0x00,0x00,0x00,0x80,0x1F, // 56 261 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0xFC,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x3F,0xC0,0x01,0x00,0x00,0x0E,0x38,0x80,0x01,0x00,0x00,0x07,0x70,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0xC0,0x00,0x00,0x00,0x07,0x60,0xF0,0x00,0x00,0x00,0x3E,0x30,0x7E,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x80,0xFF,0x01, // 57 262 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xC0,0x01,0x00,0x00,0x00,0x1C,0xC0,0x01,0x00,0x00,0x00,0x1C,0xC0,0x01, // 58 263 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xC0,0x01,0x00,0x00,0x00,0x38,0xC0,0x0F,0x00,0x00,0x00,0x38,0x80,0x03, // 59 264 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0xEC,0x00,0x00,0x00,0x00,0x00,0xCE,0x00,0x00,0x00,0x00,0x00,0xC6,0x01,0x00,0x00,0x00,0x00,0x87,0x01,0x00,0x00,0x00,0x00,0x83,0x03,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x80,0x01,0x06,0x00,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,0x00,0xC0,0x00,0x0E,0x00,0x00,0x00,0xE0,0x00,0x0C, // 60 265 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0x86,0x01, // 61 266 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0xC0,0x00,0x0E,0x00,0x00,0x00,0xC0,0x01,0x06,0x00,0x00,0x00,0x80,0x01,0x07,0x00,0x00,0x00,0x80,0x03,0x03,0x00,0x00,0x00,0x00,0x83,0x03,0x00,0x00,0x00,0x00,0x87,0x01,0x00,0x00,0x00,0x00,0x86,0x01,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0xCC,0x00,0x00,0x00,0x00,0x00,0xEC,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x30, // 62 267 | 0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x03,0x00,0x00,0x00,0x03,0xF0,0xC7,0x01,0x00,0x00,0x03,0xF8,0xCF,0x01,0x00,0x00,0x03,0x3E,0xC2,0x01,0x00,0x00,0x87,0x1F,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0xF8, // 63 268 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0x00,0xF0,0x03,0x3E,0x00,0x00,0x00,0xF8,0x00,0x70,0x00,0x00,0x00,0x3C,0xF8,0xE0,0x00,0x00,0x00,0x1C,0xFE,0xC3,0x00,0x00,0x00,0x0E,0xFF,0xC3,0x00,0x00,0x00,0x86,0x07,0x87,0x01,0x00,0x00,0x87,0x01,0x86,0x01,0x00,0x00,0xC3,0x00,0x86,0x01,0x00,0x00,0xC3,0x00,0x86,0x01,0x00,0x00,0xC3,0x00,0x83,0x01,0x00,0x00,0xC3,0x80,0x83,0x01,0x00,0x00,0x83,0xFD,0x83,0x01,0x00,0x00,0xC3,0xFF,0xC7,0x00,0x00,0x00,0xC6,0x7F,0xC7,0x00,0x00,0x00,0x06,0x00,0xC6,0x00,0x00,0x00,0x0C,0x00,0x46,0x00,0x00,0x00,0x1C,0x00,0x03,0x00,0x00,0x00,0x78,0xC0,0x01,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x80,0x3F, // 64 269 | 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0xF0,0xFF,0x03,0x00,0x00,0x00,0xFF,0x0F,0x03,0x00,0x00,0x00,0x3F,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x00,0x00,0xFF,0x00,0x03,0x00,0x00,0x00,0xFE,0x3F,0x03,0x00,0x00,0x00,0xC0,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xE0,0x01, // 65 270 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x38,0xC0,0x01,0x00,0x00,0x0F,0x7C,0xE0,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xE7,0x7F,0x00,0x00,0x00,0xF8,0x81,0x3F, // 66 271 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7C,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0F,0x00,0xE0,0x01, // 67 272 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7C,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 68 273 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 69 274 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03, // 70 275 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7E,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x0E,0x00,0xC0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x07,0xE0,0xFF,0x01,0x00,0x00,0x0E,0xE0,0xFF,0x00,0x00,0x00,0x00,0xE0,0xFF, // 71 276 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 72 277 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 73 278 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 74 279 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFB,0x03,0x00,0x00,0x00,0xF0,0xC1,0x0F,0x00,0x00,0x00,0x7C,0x00,0x3F,0x00,0x00,0x00,0x1F,0x00,0xFC,0x00,0x00,0x00,0x0F,0x00,0xF0,0x01,0x00,0x00,0x03,0x00,0xE0,0x01,0x00,0x00,0x01,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x01, // 75 280 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01, // 76 281 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 77 282 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 78 283 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 79 284 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x0E,0x70,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0xF0,0x07, // 80 285 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x01,0x00,0x00,0x7C,0x00,0xFC,0x01,0x00,0x00,0xF8,0xFF,0xFF,0x03,0x00,0x00,0xF0,0xFF,0x1F,0x03,0x00,0x00,0x80,0xFF,0x03,0x03, // 81 286 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x07,0xF8,0x03,0x00,0x00,0x00,0x0E,0xFC,0x3F,0x00,0x00,0x00,0xFE,0x1F,0xFF,0x01,0x00,0x00,0xFC,0x0F,0xF8,0x01,0x00,0x00,0xF0,0x03,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x01, // 82 287 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xE0,0x00,0x00,0x00,0xFC,0x03,0xC0,0x01,0x00,0x00,0xFE,0x07,0xC0,0x01,0x00,0x00,0x8E,0x0F,0x80,0x01,0x00,0x00,0x07,0x1E,0x80,0x01,0x00,0x00,0x03,0x3C,0x80,0x01,0x00,0x00,0x03,0x78,0x80,0x01,0x00,0x00,0x03,0xF0,0xC0,0x01,0x00,0x00,0x03,0xF0,0xE1,0x00,0x00,0x00,0x07,0xE0,0xFF,0x00,0x00,0x00,0x0F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x1F, // 83 288 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03, // 84 289 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 85 290 | 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x0F, // 86 291 | 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x1F, // 87 292 | 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x1F,0x00,0xF0,0x01,0x00,0x00,0x7F,0x00,0xFC,0x01,0x00,0x00,0xF8,0x01,0x3F,0x00,0x00,0x00,0xC0,0xEF,0x0F,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xC0,0xEF,0x07,0x00,0x00,0x00,0xF8,0x83,0x3F,0x00,0x00,0x00,0x7F,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0xF0,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x01,0x00,0x00,0x01, // 88 293 | 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0xFF,0xFF,0x01,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x03, // 89 294 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x00,0xE0,0x01,0x00,0x00,0x03,0x00,0xFC,0x01,0x00,0x00,0x03,0x00,0xFF,0x01,0x00,0x00,0x03,0xE0,0xFF,0x01,0x00,0x00,0x03,0xFC,0x87,0x01,0x00,0x00,0x83,0xFF,0x80,0x01,0x00,0x00,0xF3,0x1F,0x80,0x01,0x00,0x00,0xFF,0x03,0x80,0x01,0x00,0x00,0x7F,0x00,0x80,0x01,0x00,0x00,0x0F,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01, // 90 295 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06, // 91 296 | 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0xC0,0x01, // 92 297 | 0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x07, // 93 298 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x07, // 94 299 | 0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x1C, // 95 300 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x10, // 96 301 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x00,0x06,0x78,0xE0,0x01,0x00,0x00,0x07,0x18,0xC0,0x01,0x00,0x00,0x03,0x1C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0xC0,0x00,0x00,0x00,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 97 302 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x0F,0x3C,0xC0,0x01,0x00,0x00,0xFE,0x7F,0xE0,0x01,0x00,0x00,0xFC,0xE7,0xFF,0x00,0x00,0x00,0xF8,0xE1,0x7F,0x00,0x00,0x00,0x00,0x80,0x3F, // 98 303 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7C,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0F,0x00,0xE0,0x01, // 99 304 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7C,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 100 305 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x3E,0x18,0x7C,0x00,0x00,0x00,0x0E,0x18,0xE0,0x00,0x00,0x00,0x07,0x18,0xC0,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x07,0x18,0x80,0x01,0x00,0x00,0x1E,0x18,0x80,0x01,0x00,0x00,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0x80,0x1F, // 101 306 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x1E,0x18,0x00,0x00,0x00,0x00,0x07,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x03,0x18,0x00,0x00,0x00,0x00,0x07, // 102 307 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7E,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x0E,0x00,0xC0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x03,0x60,0x80,0x01,0x00,0x00,0x07,0xE0,0xFF,0x01,0x00,0x00,0x0E,0xE0,0xFF,0x00,0x00,0x00,0x00,0xE0,0xFF, // 103 308 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 104 309 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 105 310 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 106 311 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFB,0x03,0x00,0x00,0x00,0xF0,0xC1,0x0F,0x00,0x00,0x00,0x7C,0x00,0x3F,0x00,0x00,0x00,0x1F,0x00,0xFC,0x00,0x00,0x00,0x0F,0x00,0xF0,0x01,0x00,0x00,0x03,0x00,0xE0,0x01,0x00,0x00,0x01,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x01, // 107 312 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01, // 108 313 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xF8,0xFF,0xFF,0x01, // 109 314 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xF8,0xFF,0xFF,0x01, // 110 315 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 111 316 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x0E,0x70,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0xF0,0x07, // 112 317 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x01,0x00,0x00,0x7C,0x00,0xFC,0x01,0x00,0x00,0xF8,0xFF,0xFF,0x03,0x00,0x00,0xF0,0xFF,0x1F,0x03,0x00,0x00,0x80,0xFF,0x03,0x03, // 113 318 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07, // 114 319 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xE0,0x00,0x00,0x00,0xFC,0x03,0xC0,0x01,0x00,0x00,0xFE,0x07,0xC0,0x01,0x00,0x00,0x8E,0x0F,0x80,0x01,0x00,0x00,0x07,0x1E,0x80,0x01,0x00,0x00,0x03,0x3C,0x80,0x01,0x00,0x00,0x03,0x78,0x80,0x01,0x00,0x00,0x03,0xF0,0xC0,0x01,0x00,0x00,0x03,0xF0,0xE1,0x00,0x00,0x00,0x07,0xE0,0xFF,0x00,0x00,0x00,0x0F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x1F, // 115 320 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03, // 116 321 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 117 322 | 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x0F, // 118 323 | 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x1F, // 119 324 | 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x1F,0x00,0xF0,0x01,0x00,0x00,0x7F,0x00,0xFC,0x01,0x00,0x00,0xF8,0x01,0x3F,0x00,0x00,0x00,0xC0,0xEF,0x0F,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xC0,0xEF,0x07,0x00,0x00,0x00,0xF8,0x83,0x3F,0x00,0x00,0x00,0x7F,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0xF0,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x01,0x00,0x00,0x01, // 120 325 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x80,0x01,0x00,0x00,0x1F,0x00,0x80,0x01,0x00,0x00,0xFF,0x00,0x80,0x01,0x00,0x00,0xF8,0x07,0xC0,0x01,0x00,0x00,0xC0,0x3F,0xE0,0x01,0x00,0x00,0x00,0xFE,0xFD,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x07, // 121 326 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x03,0x00,0xE0,0x01,0x00,0x00,0x03,0x00,0xFC,0x01,0x00,0x00,0x03,0x00,0xFF,0x01,0x00,0x00,0x03,0xE0,0xFF,0x01,0x00,0x00,0x03,0xFC,0x87,0x01,0x00,0x00,0x83,0xFF,0x80,0x01,0x00,0x00,0xF3,0x1F,0x80,0x01,0x00,0x00,0xFF,0x03,0x80,0x01,0x00,0x00,0x7F,0x00,0x80,0x01,0x00,0x00,0x0F,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01, // 122 327 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x3E,0x78,0xF0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xCF,0xFF,0x03,0x00,0x80,0xC1,0x87,0x07,0x07,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06, // 123 328 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x03,0xC0,0xFF,0xFF,0xFF,0xFF,0x03,0xC0,0xFF,0xFF,0xFF,0xFF,0x03, // 124 329 | 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0x80,0xC1,0x87,0x07,0x03,0x00,0x80,0xFF,0xCF,0xFF,0x03,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x3E,0x78,0xF0,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 125 330 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x38, // 126 331 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0xFF,0xFF,0x01,0x00,0x00,0x87,0xFF,0xFF,0x01,0x00,0x00,0x87,0xFF,0xFF,0x01, // 161 332 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xC0,0xFF,0x0F,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0xF0,0x00,0x7C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x1C,0x00,0xE0,0x00,0x00,0x00,0x0C,0x00,0xC0,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x0C,0x00,0xC0,0x00,0x00,0x00,0x0C,0x00,0xC0,0x00,0x00,0x00,0x1C,0x00,0xE0,0x00,0x00,0x00,0x1C,0x00,0xE0, // 162 333 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0xC0,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x0F,0x18,0x80,0x01,0x00,0x00,0x07,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0x80,0x01, // 163 334 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0x01,0x00,0x00,0x00,0xE0,0xDE,0x01,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0xE0,0xDE,0x01,0x00,0x00,0x00,0x60,0x80,0x01, // 164 335 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x0C,0x00,0x00,0x00,0xFE,0xC3,0x0C,0x00,0x00,0x00,0xE0,0xDF,0x0C,0x00,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0xE0,0xDF,0x0C,0x00,0x00,0x00,0xFE,0xC3,0x0C,0x00,0x00,0x00,0x7F,0xC0,0x0C,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x01, // 165 336 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0xFC,0x7F,0x00,0x80,0xFF,0x0F,0xFC,0x7F,0x00,0x80,0xFF,0x0F,0xFC,0x7F, // 166 337 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x60,0x00,0x00,0x00,0x7E,0x7F,0xE0,0x00,0x00,0x00,0xFE,0x71,0xC0,0x00,0x00,0x00,0xC7,0xE0,0xC0,0x00,0x00,0x00,0xC3,0xC1,0xC0,0x00,0x00,0x00,0x83,0x81,0xC1,0x00,0x00,0x00,0x03,0x83,0xC3,0x00,0x00,0x00,0x03,0x07,0x63,0x00,0x00,0x00,0x07,0x8E,0x7F,0x00,0x00,0x00,0x06,0xFC,0x3C,0x00,0x00,0x00,0x00,0x78, // 167 338 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x0E, // 168 339 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0xC0,0x03,0x0F,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x70,0xFC,0x38,0x00,0x00,0x00,0x38,0xFF,0x73,0x00,0x00,0x00,0x98,0xFF,0x67,0x00,0x00,0x00,0x98,0x03,0x67,0x00,0x00,0x00,0xCC,0x01,0xCE,0x00,0x00,0x00,0xCC,0x00,0xCC,0x00,0x00,0x00,0xCC,0x00,0xCC,0x00,0x00,0x00,0xCC,0x00,0xCC,0x00,0x00,0x00,0xCC,0x00,0xCC,0x00,0x00,0x00,0xCC,0x01,0xCE,0x00,0x00,0x00,0x98,0x01,0x66,0x00,0x00,0x00,0x18,0x00,0x60,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0xC0,0x03,0x0F,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0xFC, // 169 340 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x9F,0x01,0x00,0x00,0x00,0x86,0xBF,0x01,0x00,0x00,0x00,0xC3,0xB0,0x01,0x00,0x00,0x00,0x43,0xB0,0x01,0x00,0x00,0x00,0x47,0x98,0x01,0x00,0x00,0x00,0xFF,0xBF,0x01,0x00,0x00,0x00,0xFC,0xBF,0x01, // 170 341 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x80,0xC7,0x07,0x00,0x00,0x00,0xC0,0x03,0x07,0x00,0x00,0x00,0x80,0x00,0x06,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xEF,0x03,0x00,0x00,0x00,0xC0,0x87,0x0F,0x00,0x00,0x00,0x80,0x01,0x06, // 171 342 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE, // 172 343 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 173 344 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x3C,0x38,0x00,0x00,0x00,0x00,0x0E,0x70,0x00,0x00,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0xF3,0xCF,0x00,0x00,0x00,0x00,0xF3,0xCF,0x00,0x00,0x00,0x00,0x13,0xC1,0x00,0x00,0x00,0x00,0xF3,0xCF,0x00,0x00,0x00,0x00,0xE3,0xCC,0x00,0x00,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0x0E,0x70,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0xE0,0x07, // 174 345 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x0C, // 175 346 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0xC7,0x00,0x00,0x00,0x00,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,0xE7,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x3C, // 176 347 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0xE0,0xFF,0x33,0x00,0x00,0x00,0xE0,0xFF,0x33,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x0C,0x30, // 177 348 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x03,0xDC,0x00,0x00,0x00,0x00,0x07,0xCF,0x00,0x00,0x00,0x00,0xFF,0xC7,0x00,0x00,0x00,0x00,0xFE,0xC1,0x00,0x00,0x00,0x00,0x7C,0xC0, // 178 349 | 0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x06,0xC0,0x01,0x00,0x00,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x83,0x81,0x01,0x00,0x00,0x00,0x83,0x81,0x01,0x00,0x00,0x00,0xC7,0xC3,0x01,0x00,0x00,0x00,0x7F,0xFF,0x00,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x00,0x00,0x3C,0x7C, // 179 350 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x01, // 180 351 | 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x80,0xFF,0xC3,0x01,0x00,0x00,0x80,0x1F,0x80,0x01,0x00,0x00,0x80,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x80,0x01, // 181 352 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 182 353 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x70, // 183 354 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x38, // 184 355 | 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF, // 185 356 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x87,0x01,0x00,0x00,0x00,0xFE,0x9F,0x01,0x00,0x00,0x00,0x07,0xB8,0x01,0x00,0x00,0x00,0x03,0xB0,0x01,0x00,0x00,0x00,0x03,0xB0,0x01,0x00,0x00,0x00,0x07,0xB8,0x01,0x00,0x00,0x00,0xFE,0x9F,0x01,0x00,0x00,0x00,0xF8,0x87,0x01, // 186 357 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x06,0x00,0x00,0x00,0xC0,0x03,0x07,0x00,0x00,0x00,0x80,0xC7,0x07,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0xC0,0x01,0x07,0x00,0x00,0x00,0xC0,0x87,0x07,0x00,0x00,0x00,0x00,0xEF,0x03,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x38, // 187 358 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0xFF,0x1F,0xC0,0x01,0x00,0x00,0xFF,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x80,0x0F,0x38,0x00,0x00,0x00,0xE0,0x01,0x3E,0x00,0x00,0x00,0x7C,0xC0,0x31,0x00,0x00,0x00,0x0F,0x60,0x30,0x00,0x00,0x00,0x03,0xF0,0xFF,0x01,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 188 359 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0xFF,0x3F,0xC0,0x01,0x00,0x00,0xFF,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0xF0,0x63,0x80,0x01,0x00,0x00,0x7C,0x30,0xC0,0x01,0x00,0x00,0x1F,0x30,0xE0,0x01,0x00,0x00,0x03,0x30,0xB0,0x01,0x00,0x00,0x00,0x70,0x9C,0x01,0x00,0x00,0x00,0xE0,0x8F,0x01,0x00,0x00,0x00,0xC0,0x83,0x01, // 189 360 | 0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x03,0x30,0x00,0x00,0x00,0x00,0x63,0x30,0x00,0x00,0x00,0x00,0x63,0x30,0x00,0x01,0x00,0x00,0xF3,0x38,0xC0,0x01,0x00,0x00,0xDF,0x1F,0xF8,0x00,0x00,0x00,0x1E,0x0F,0x1E,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x80,0x07,0x38,0x00,0x00,0x00,0xE0,0x01,0x3E,0x00,0x00,0x00,0x7C,0xC0,0x33,0x00,0x00,0x00,0x0F,0x60,0x30,0x00,0x00,0x00,0x03,0xF0,0xFF,0x01,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 190 361 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0xE0,0xC3,0x01,0x00,0x00,0x00,0xF0,0x80,0x01,0x00,0x00,0x87,0x78,0x80,0x01,0x00,0x00,0xE7,0x3F,0x80,0x01,0x00,0x00,0xC7,0x1F,0x80,0x01,0x00,0x00,0x80,0x07,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0, // 191 362 | 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x02,0x00,0xFE,0xFF,0x01,0x00,0x06,0xF0,0xFF,0x03,0x00,0x00,0x1E,0xFF,0x0F,0x03,0x00,0x00,0x3C,0x3F,0x00,0x03,0x00,0x00,0x30,0x07,0x00,0x03,0x00,0x00,0x00,0xFF,0x00,0x03,0x00,0x00,0x00,0xFE,0x3F,0x03,0x00,0x00,0x00,0xC0,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xE0,0x01, // 192 363 | 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x00,0xF0,0xFF,0x03,0x00,0x00,0x00,0xFF,0x0F,0x03,0x00,0x00,0x00,0x3F,0x00,0x03,0x00,0x00,0x38,0x07,0x00,0x03,0x00,0x00,0x3E,0xFF,0x00,0x03,0x00,0x00,0x0E,0xFE,0x3F,0x03,0x00,0x00,0x06,0xC0,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xE0,0x01, // 193 364 | 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0xFE,0xFF,0x01,0x00,0x30,0xF0,0xFF,0x03,0x00,0x00,0x3C,0xFF,0x0F,0x03,0x00,0x00,0x1E,0x3F,0x00,0x03,0x00,0x00,0x06,0x07,0x00,0x03,0x00,0x00,0x1E,0xFF,0x00,0x03,0x00,0x00,0x38,0xFE,0x3F,0x03,0x00,0x00,0x20,0xC0,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xE0,0x01, // 194 365 | 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x38,0xC0,0xFF,0x0F,0x00,0x00,0x3C,0xFE,0x3F,0x03,0x00,0x00,0x0C,0xFF,0x00,0x03,0x00,0x00,0x18,0x07,0x00,0x03,0x00,0x00,0x30,0xFF,0x00,0x03,0x00,0x00,0x3C,0xFE,0x3F,0x03,0x00,0x00,0x1C,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x01, // 195 366 | 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x38,0xE0,0xFF,0x07,0x00,0x00,0x38,0xFF,0x1F,0x03,0x00,0x00,0x38,0x7F,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x00,0x38,0xFF,0x00,0x03,0x00,0x00,0x38,0xFF,0x1F,0x03,0x00,0x00,0x38,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x01, // 196 367 | 0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x1C,0xF0,0xFF,0x03,0x00,0x00,0x7F,0xFF,0x07,0x03,0x00,0x00,0x63,0x1F,0x00,0x03,0x00,0x00,0x63,0x1F,0x00,0x03,0x00,0x00,0x7F,0xFF,0x07,0x03,0x00,0x00,0x1C,0xF0,0xFF,0x03,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0xC0,0x01, // 197 368 | 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0xC0,0xFF,0x0F,0x00,0x00,0x00,0xFF,0x3F,0x03,0x00,0x00,0x00,0xFF,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 198 369 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7E,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x61,0x00,0x00,0x03,0x00,0x80,0x67,0x00,0x00,0x03,0x00,0x80,0x67,0x00,0x00,0x03,0x00,0x80,0x7D,0x00,0x00,0x03,0x00,0xC0,0x39,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0F,0x00,0xE0,0x01, // 199 370 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x02,0xFF,0xFF,0xFF,0x01,0x00,0x0E,0xFF,0xFF,0xFF,0x01,0x00,0x1E,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x20,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 200 371 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x20,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x1E,0x03,0x18,0x80,0x01,0x00,0x0E,0x03,0x18,0x80,0x01,0x00,0x02,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 201 372 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x30,0xFF,0xFF,0xFF,0x01,0x00,0x3E,0x03,0x18,0x80,0x01,0x00,0x0E,0x03,0x18,0x80,0x01,0x00,0x0E,0x03,0x18,0x80,0x01,0x00,0x3E,0x03,0x18,0x80,0x01,0x00,0x30,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 202 373 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01, // 203 374 | 0x06,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF,0xFF,0xFF,0x01,0x00,0x30,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 204 375 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x30,0xFF,0xFF,0xFF,0x01,0x00,0x3C,0xFF,0xFF,0xFF,0x01,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x06, // 205 376 | 0x20,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x01,0x00,0x06,0xFF,0xFF,0xFF,0x01,0x00,0x1E,0xFF,0xFF,0xFF,0x01,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x20, // 206 377 | 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38, // 207 378 | 0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7C,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 208 379 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x38,0xFE,0x00,0x00,0x00,0x00,0x3C,0xF0,0x03,0x00,0x00,0x00,0x0C,0x80,0x1F,0x00,0x00,0x00,0x18,0x00,0xFC,0x00,0x00,0x00,0x30,0x00,0xE0,0x07,0x00,0x00,0x3C,0x00,0x80,0x1F,0x00,0x00,0x1C,0x00,0x00,0xFC,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 209 380 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x02,0x7E,0x00,0xFC,0x00,0x00,0x06,0x0E,0x00,0xE0,0x00,0x00,0x0E,0x07,0x00,0xC0,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 210 381 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x0E,0x07,0x00,0xC0,0x01,0x00,0x06,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 211 382 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x20,0x0E,0x00,0xE0,0x00,0x00,0x38,0x07,0x00,0xC0,0x01,0x00,0x0E,0x03,0x00,0x80,0x01,0x00,0x06,0x03,0x00,0x80,0x01,0x00,0x0E,0x03,0x00,0x80,0x01,0x00,0x38,0x07,0x00,0xC0,0x01,0x00,0x20,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 212 383 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x38,0x0E,0x00,0xE0,0x00,0x00,0x3C,0x07,0x00,0xC0,0x01,0x00,0x0C,0x03,0x00,0x80,0x01,0x00,0x18,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x3C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 213 384 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x1C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x1C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 214 385 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x06,0x00,0x00,0x00,0x80,0x03,0x07,0x00,0x00,0x00,0x00,0x87,0x03,0x00,0x00,0x00,0x00,0xCE,0x01,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0xCE,0x01,0x00,0x00,0x00,0x00,0x87,0x03,0x00,0x00,0x00,0x80,0x03,0x07,0x00,0x00,0x00,0x80,0x01,0x02, // 215 386 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x02,0x00,0x00,0x7E,0x00,0xFC,0x03,0x00,0x00,0x0E,0x00,0xF8,0x03,0x00,0x00,0x07,0x80,0xFF,0x01,0x00,0x00,0x03,0xF0,0x87,0x01,0x00,0x00,0x03,0xFE,0x80,0x01,0x00,0x00,0xC3,0x1F,0x80,0x01,0x00,0x00,0xFF,0x01,0xC0,0x01,0x00,0x80,0x3F,0x00,0xE0,0x00,0x00,0x80,0x7F,0x00,0xFC,0x00,0x00,0x80,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 216 387 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x01,0xFF,0xFF,0xFF,0x00,0x00,0x03,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0xC0,0x01,0x00,0x1E,0x00,0x00,0x80,0x01,0x00,0x30,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 217 388 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x38,0x00,0x00,0x80,0x01,0x00,0x1E,0x00,0x00,0x80,0x01,0x00,0x0F,0x00,0x00,0xC0,0x01,0x00,0x03,0x00,0x00,0xE0,0x00,0x00,0x01,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 218 389 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x20,0x00,0x00,0xE0,0x00,0x00,0x3C,0x00,0x00,0xC0,0x01,0x00,0x0F,0x00,0x00,0x80,0x01,0x00,0x07,0x00,0x00,0x80,0x01,0x00,0x0F,0x00,0x00,0x80,0x01,0x00,0x3C,0x00,0x00,0xC0,0x01,0x00,0x20,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 219 390 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x1C,0x00,0x00,0xE0,0x00,0x00,0x1C,0x00,0x00,0xC0,0x01,0x00,0x1C,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0xC0,0x01,0x00,0x1C,0x00,0x00,0xE0,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0x1F, // 220 391 | 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x00,0x30,0x00,0xF8,0xFF,0x01,0x00,0x3C,0x00,0xFF,0xFF,0x01,0x00,0x0E,0xE0,0x1F,0x00,0x00,0x00,0x06,0xFE,0x03,0x00,0x00,0x00,0x02,0x7F,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x03, // 221 392 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x70,0x00,0x0E,0x00,0x00,0x00,0xE0,0x80,0x07,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x7F, // 222 393 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xC0,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x3C,0x80,0x01,0x00,0x00,0x0E,0x3E,0xC0,0x01,0x00,0x00,0xFE,0xF7,0xE0,0x00,0x00,0x00,0xFC,0xE3,0xFF,0x00,0x00,0x00,0xF8,0xC1,0x7F,0x00,0x00,0x00,0x00,0x80,0x1F, // 223 394 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x02,0x0E,0xF0,0xFF,0x00,0x00,0x06,0x06,0x78,0xE0,0x01,0x00,0x0E,0x07,0x18,0xC0,0x01,0x00,0x3C,0x03,0x1C,0x80,0x01,0x00,0x30,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0xC0,0x00,0x00,0x00,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 224 395 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x00,0x06,0x78,0xE0,0x01,0x00,0x00,0x07,0x18,0xC0,0x01,0x00,0x00,0x03,0x1C,0x80,0x01,0x00,0x30,0x03,0x0C,0x80,0x01,0x00,0x3C,0x03,0x0C,0x80,0x01,0x00,0x1E,0x03,0x0C,0xC0,0x00,0x00,0x06,0x0F,0x06,0x60,0x00,0x00,0x02,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 225 396 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x20,0x06,0x78,0xE0,0x01,0x00,0x38,0x07,0x18,0xC0,0x01,0x00,0x1E,0x03,0x1C,0x80,0x01,0x00,0x06,0x03,0x0C,0x80,0x01,0x00,0x0E,0x03,0x0C,0x80,0x01,0x00,0x1C,0x03,0x0C,0xC0,0x00,0x00,0x30,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 226 397 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x38,0x06,0x78,0xE0,0x01,0x00,0x3C,0x07,0x18,0xC0,0x01,0x00,0x0C,0x03,0x1C,0x80,0x01,0x00,0x18,0x03,0x0C,0x80,0x01,0x00,0x30,0x03,0x0C,0x80,0x01,0x00,0x3C,0x07,0x0C,0xC0,0x00,0x00,0x1C,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 227 398 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x1C,0x06,0x78,0xE0,0x01,0x00,0x1C,0x07,0x18,0xC0,0x01,0x00,0x1C,0x03,0x1C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x1C,0x03,0x0C,0x80,0x01,0x00,0x1C,0x07,0x0C,0xC0,0x00,0x00,0x1C,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 228 399 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x00,0x06,0x78,0xE0,0x01,0x00,0x1E,0x07,0x18,0xC0,0x01,0x00,0x3F,0x03,0x1C,0x80,0x01,0x00,0x33,0x03,0x0C,0x80,0x01,0x00,0x33,0x03,0x0C,0x80,0x01,0x00,0x3F,0x03,0x0C,0xC0,0x00,0x00,0x1E,0x0F,0x06,0x60,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0x01, // 229 400 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x0E,0xE0,0x7F,0x00,0x00,0x00,0x0E,0xF0,0xFF,0x00,0x00,0x00,0x07,0x78,0xE0,0x01,0x00,0x00,0x07,0x38,0xC0,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x03,0x0C,0x80,0x01,0x00,0x00,0x07,0x0C,0xC0,0x01,0x00,0x00,0x1F,0x04,0xC0,0x00,0x00,0x00,0xFE,0xFF,0xE3,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x3E,0x18,0xF8,0x00,0x00,0x00,0x07,0x18,0xE0,0x00,0x00,0x00,0x03,0x18,0xC0,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x07,0x18,0x80,0x01,0x00,0x00,0x1E,0x18,0x80,0x01,0x00,0x00,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0xC0,0x1F, // 230 401 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x00,0x7E,0x00,0x00,0x00,0x1E,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x61,0x00,0x00,0x03,0x00,0x80,0x67,0x00,0x00,0x03,0x00,0x80,0x67,0x00,0x00,0x03,0x00,0x80,0x7D,0x00,0x00,0x03,0x00,0xC0,0x39,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0F,0x00,0xE0,0x01, // 231 402 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x02,0x3E,0x18,0x7C,0x00,0x00,0x06,0x0E,0x18,0xE0,0x00,0x00,0x1E,0x07,0x18,0xC0,0x01,0x00,0x3C,0x03,0x18,0x80,0x01,0x00,0x30,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x07,0x18,0x80,0x01,0x00,0x00,0x1E,0x18,0x80,0x01,0x00,0x00,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0x80,0x1F, // 232 403 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x3E,0x18,0x7C,0x00,0x00,0x00,0x0E,0x18,0xE0,0x00,0x00,0x00,0x07,0x18,0xC0,0x01,0x00,0x20,0x03,0x18,0x80,0x01,0x00,0x38,0x03,0x18,0x80,0x01,0x00,0x1E,0x03,0x18,0x80,0x01,0x00,0x0E,0x07,0x18,0x80,0x01,0x00,0x06,0x1E,0x18,0x80,0x01,0x00,0x02,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0x80,0x1F, // 233 404 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x3E,0x18,0x7C,0x00,0x00,0x30,0x0E,0x18,0xE0,0x00,0x00,0x3C,0x07,0x18,0xC0,0x01,0x00,0x0E,0x03,0x18,0x80,0x01,0x00,0x06,0x03,0x18,0x80,0x01,0x00,0x1E,0x03,0x18,0x80,0x01,0x00,0x3C,0x07,0x18,0x80,0x01,0x00,0x30,0x1E,0x18,0x80,0x01,0x00,0x00,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0x80,0x1F, // 234 405 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x3E,0x18,0x7C,0x00,0x00,0x1C,0x0E,0x18,0xE0,0x00,0x00,0x1C,0x07,0x18,0xC0,0x01,0x00,0x1C,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x1C,0x03,0x18,0x80,0x01,0x00,0x1C,0x07,0x18,0x80,0x01,0x00,0x1C,0x1E,0x18,0x80,0x01,0x00,0x00,0xFC,0x1F,0xC0,0x01,0x00,0x00,0xF8,0x1F,0xE0,0x01,0x00,0x00,0x80,0x1F, // 235 406 | 0x06,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF,0xFF,0xFF,0x01,0x00,0x30,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 236 407 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x30,0xFF,0xFF,0xFF,0x01,0x00,0x3C,0xFF,0xFF,0xFF,0x01,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x06, // 237 408 | 0x20,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x01,0x00,0x06,0xFF,0xFF,0xFF,0x01,0x00,0x1E,0xFF,0xFF,0xFF,0x01,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x20, // 238 409 | 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x38,0xFF,0xFF,0xFF,0x01,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38, // 239 410 | 0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x18,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7C,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 240 411 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x38,0x18,0x00,0x00,0x00,0x00,0x3C,0x0C,0x00,0x00,0x00,0x00,0x0C,0x06,0x00,0x00,0x00,0x00,0x18,0x03,0x00,0x00,0x00,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x3C,0x03,0x00,0x00,0x00,0x00,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xF8,0xFF,0xFF,0x01, // 241 412 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x02,0x7E,0x00,0xFC,0x00,0x00,0x06,0x0E,0x00,0xE0,0x00,0x00,0x0E,0x07,0x00,0xC0,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 242 413 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x07,0x00,0xC0,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x0E,0x07,0x00,0xC0,0x01,0x00,0x06,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 243 414 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x20,0x0E,0x00,0xE0,0x00,0x00,0x38,0x07,0x00,0xC0,0x01,0x00,0x0E,0x03,0x00,0x80,0x01,0x00,0x06,0x03,0x00,0x80,0x01,0x00,0x0E,0x03,0x00,0x80,0x01,0x00,0x38,0x07,0x00,0xC0,0x01,0x00,0x20,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 244 415 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x38,0x0E,0x00,0xE0,0x00,0x00,0x3C,0x07,0x00,0xC0,0x01,0x00,0x0C,0x03,0x00,0x80,0x01,0x00,0x18,0x03,0x00,0x80,0x01,0x00,0x30,0x03,0x00,0x80,0x01,0x00,0x3C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 245 416 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x1C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x80,0x01,0x00,0x1C,0x03,0x00,0x80,0x01,0x00,0x1C,0x07,0x00,0xC0,0x01,0x00,0x1C,0x0E,0x00,0xE0,0x00,0x00,0x00,0x7E,0x00,0xFC,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 246 417 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0xC0,0x31,0x0E,0x00,0x00,0x00,0xC0,0x31,0x0E,0x00,0x00,0x00,0xC0,0x31,0x0E,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30, // 247 418 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x02,0x00,0x00,0x7E,0x00,0xFC,0x03,0x00,0x00,0x0E,0x00,0xF8,0x03,0x00,0x00,0x07,0x80,0xFF,0x01,0x00,0x00,0x03,0xF0,0x87,0x01,0x00,0x00,0x03,0xFE,0x80,0x01,0x00,0x00,0xC3,0x1F,0x80,0x01,0x00,0x00,0xFF,0x01,0xC0,0x01,0x00,0x80,0x3F,0x00,0xE0,0x00,0x00,0x80,0x7F,0x00,0xFC,0x00,0x00,0x80,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x80,0xFF,0x03, // 248 419 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x02,0xFF,0xFF,0xFF,0x01,0x00,0x06,0x00,0x00,0xC0,0x01,0x00,0x0E,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0x80,0x01,0x00,0x30,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 249 420 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x20,0x00,0x00,0x80,0x01,0x00,0x30,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0xC0,0x00,0x00,0x0E,0x00,0x00,0x60,0x00,0x00,0x06,0x00,0x00,0x70,0x00,0x00,0x02,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 250 421 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x20,0x00,0x00,0xC0,0x01,0x00,0x3C,0x00,0x00,0x80,0x01,0x00,0x0E,0x00,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x80,0x01,0x00,0x0E,0x00,0x00,0xC0,0x00,0x00,0x3C,0x00,0x00,0x60,0x00,0x00,0x30,0x00,0x00,0x70,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 251 422 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x1C,0x00,0x00,0xC0,0x01,0x00,0x1C,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x1C,0x00,0x00,0xC0,0x00,0x00,0x1C,0x00,0x00,0x60,0x00,0x00,0x1C,0x00,0x00,0x70,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01, // 252 423 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x80,0x01,0x00,0x00,0x1F,0x00,0x80,0x01,0x00,0x00,0xFF,0x00,0x80,0x01,0x00,0x00,0xF8,0x07,0xC0,0x01,0x00,0x00,0xC0,0x3F,0xE0,0x01,0x00,0x00,0x00,0xFE,0xFD,0x00,0x00,0x30,0x00,0xF0,0x3F,0x00,0x00,0x3C,0x00,0xF8,0x07,0x00,0x00,0x0E,0x80,0xFF,0x00,0x00,0x00,0x06,0xF0,0x1F,0x00,0x00,0x00,0x02,0xFF,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x07, // 253 424 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x00,0x00,0x70,0x00,0x0E,0x00,0x00,0x00,0xE0,0x80,0x07,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x7F, // 254 425 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x80,0x01,0x00,0x00,0x1F,0x00,0x80,0x01,0x00,0x00,0xFF,0x00,0x80,0x01,0x00,0x1C,0xF8,0x07,0xC0,0x01,0x00,0x1C,0x80,0x3F,0xE0,0x00,0x00,0x1C,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0xE0,0x3F,0x00,0x00,0x1C,0x00,0xFC,0x07,0x00,0x00,0x1C,0x80,0xFF,0x00,0x00,0x00,0x1C,0xF8,0x1F,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x07 // 255 426 | }; 427 | 428 | --------------------------------------------------------------------------------