Initial commit
This commit is contained in:
173
E-Paper_Showerthoughts.ino
Normal file
173
E-Paper_Showerthoughts.ino
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
#include <esp_wifi.h>
|
||||||
|
#include <esp_bt.h>
|
||||||
|
|
||||||
|
#include "credentials.h"
|
||||||
|
#include "logo.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define uS_TO_S_FACTOR 1000000 // Conversion of seconds (S) to microseconds (uS)
|
||||||
|
#define SLEEPING_TIME 1800 // Time in Seconds e.g. 1800s = 0.5 hours
|
||||||
|
RTC_DATA_ATTR int bootCount = 0; // Boot counter after deep sleep
|
||||||
|
|
||||||
|
// Creating instances
|
||||||
|
WiFiClientSecure client;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
display.init(115200);
|
||||||
|
SPI.end(); // Do not use standard SPI pins
|
||||||
|
SPI.begin(13, 12, 14, 15); // Remap SPI pins for Waveshare ESP32 module
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setRotation(3); // Rotate Dislay orientation 180°
|
||||||
|
Serial.println("DEBUG: Setup EPD Display complete");
|
||||||
|
delay(2000);
|
||||||
|
connectToWifi();
|
||||||
|
esp_sleep_enable_timer_wakeup(SLEEPING_TIME * uS_TO_S_FACTOR);
|
||||||
|
++bootCount;
|
||||||
|
Serial.println("INFO: Boot number: " + String(bootCount));
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
DisplayShowerthought();
|
||||||
|
Serial.println("INFO: Going to deep sleep");
|
||||||
|
esp_wifi_stop();
|
||||||
|
esp_bt_controller_disable();
|
||||||
|
esp_deep_sleep_start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
///// WiFi Setup /////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void connectToWifi() {
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
Serial.print("WIFI: Connecting ");
|
||||||
|
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
Serial.print(".");
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("WIFI: Connected to network");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
Serial.println(WiFi.macAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char GreeterText[] = "Reddit | Showerthoughts";
|
||||||
|
|
||||||
|
void DisplayShowerthought() {
|
||||||
|
Serial.println("DEBUG: Showing greeting screen");
|
||||||
|
//display.setRotation(3);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(GreeterText, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage(); // Full refresh
|
||||||
|
String Thought = getShowerthought();
|
||||||
|
do {
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawBitmap(130, 90, logo, 125, 125, GxEPD_BLACK);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(GreeterText);
|
||||||
|
display.drawRect(x-16, y-20, tbw+32, tbh+18, GxEPD_BLACK);
|
||||||
|
display.setCursor(0, 450);
|
||||||
|
display.print(Thought);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
///// Reddit utils /////
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
String getShowerthought() {
|
||||||
|
// Connect to reddit.com and fetch the showerthought data using the web client
|
||||||
|
Serial.println("Fetching Showerthougt");
|
||||||
|
if(!client.connect(host, port)) {
|
||||||
|
Serial.println("connection 1 failed!");
|
||||||
|
return "Impossible to connect to Reddit";
|
||||||
|
}
|
||||||
|
String url = "/r/Showerthoughts/random.json?sort=hot&limit=1&t=day";
|
||||||
|
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
|
||||||
|
"Host: " + host + "\r\n" +
|
||||||
|
"User-Agent: ESP32/0.1\r\n" +
|
||||||
|
"Connection: close\r\n\r\n");
|
||||||
|
unsigned long timeout = millis();
|
||||||
|
while (client.available() == 0) {
|
||||||
|
if (millis() - timeout > 5000) {
|
||||||
|
Serial.println(">>> Client Timeout !");
|
||||||
|
client.stop();
|
||||||
|
return "Reddit did not respond in time";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the random post url (redirection)
|
||||||
|
String headerLine = "";
|
||||||
|
String locationUrl;
|
||||||
|
while(headerLine != "\r") {
|
||||||
|
headerLine = client.readStringUntil('\n');
|
||||||
|
if(headerLine.indexOf("location: ") ==0) {
|
||||||
|
locationUrl = headerLine.substring(10, headerLine.indexOf("?"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
client.stop();
|
||||||
|
// get the content of the url we just got
|
||||||
|
if(!client.connect(host, port)) {
|
||||||
|
Serial.println("connection 2 failed!");
|
||||||
|
return "Impossible to reconnect to Reddit";
|
||||||
|
}
|
||||||
|
client.print(String("GET ") + locationUrl + " HTTP/1.1\r\n" +
|
||||||
|
"Host: " + host + "\r\n" +
|
||||||
|
"User-Agent: ESP32/0.1\r\n" +
|
||||||
|
"Connection: close\r\n\r\n");
|
||||||
|
timeout = millis();
|
||||||
|
while (client.available() == 0) {
|
||||||
|
if (millis() - timeout > 5000) {
|
||||||
|
Serial.println(">>> Client Timeout !");
|
||||||
|
client.stop();
|
||||||
|
return "Shower thought did not arrived in time";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get rid of header
|
||||||
|
while(client.connected()) {
|
||||||
|
String line = client.readStringUntil('\n');
|
||||||
|
if (line == "\r") {
|
||||||
|
Serial.println("headers received");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Get the response from the reddit.com server
|
||||||
|
String quote = client.readStringUntil('\n');
|
||||||
|
client.stop();
|
||||||
|
// As the JSON-formatted response text can be too long, we'll parse it manually instead of using ArduinoJson
|
||||||
|
int quote_start = quote.indexOf("\"title\"");
|
||||||
|
// The showerthought quote ends right before a ', "' substring
|
||||||
|
int quote_end = quote.indexOf(", \"", quote_start+1); // we start the search from the position where "title" is
|
||||||
|
String showerthought = quote.substring(quote_start+9, quote_end);
|
||||||
|
// Sanitize the string a bit
|
||||||
|
showerthought.replace("\\\"","'"); // get rid of escaped quotes in the text ('\"')
|
||||||
|
int junkIndex = showerthought.indexOf("\\u");
|
||||||
|
while(junkIndex >= 0) {
|
||||||
|
showerthought.remove(junkIndex, 5);
|
||||||
|
showerthought.setCharAt(junkIndex, '\'');
|
||||||
|
junkIndex = showerthought.indexOf("\\u");
|
||||||
|
}
|
||||||
|
return showerthought;
|
||||||
|
Serial.print(showerthought);
|
||||||
|
}
|
||||||
18
README.md
18
README.md
@@ -1,3 +1,17 @@
|
|||||||
# E-Paper_Showerthoughts
|
# E-Paper Showerthoughts Display
|
||||||
|
This code uses an ESP32 to fetch latest posts from [/r/showerthoughts](https://www.reddit.com/r/Showerthoughts/) and displays them on a Waveshare e-paper display. Afterwards it puts the ESP to deep sleep mode. All components run on battery power without annoying cables.
|
||||||
|
|
||||||
This repository contains code for fetching posts from /r/showerthoughts and displaying them on a waveshare e-paper display.
|

|
||||||
|

|
||||||
|
|
||||||
|
#### Used Hardware
|
||||||
|
+ [Waveshare 7.5" e-paper display](https://www.waveshare.com/7.5inch-e-paper.htm)
|
||||||
|
+ [Waveshare ESP32 Driver Board](https://www.waveshare.com/e-paper-esp32-driver-board.htm)
|
||||||
|
+ [IKEA Ribba Picture Frame 21x30cm](https://www.ikea.com/de/de/p/ribba-rahmen-schwarz-60378396/)
|
||||||
|
+ Custom made passepartouts (approx 10€)
|
||||||
|
+ [18650 battery](https://de.aliexpress.com/item/33033883495.html?spm=a2g0o.productlist.0.0.708e4adbR5PUrg&algo_pvid=909ec7f9-0dec-4d04-9ab2-ef9166feb299&algo_expid=909ec7f9-0dec-4d04-9ab2-ef9166feb299-12&btsid=d3c3feb7-5f93-4090-ad6a-6a72fec81e74&ws_ab_test=searchweb0_0,searchweb201602_9,searchweb201603_55)
|
||||||
|
+ [Battery charge shield for 18650 batteries](https://de.aliexpress.com/item/32870248379.html?spm=a2g0o.productlist.0.0.74ef5554qSLELp&algo_pvid=a72d0c05-ed9a-41f1-8723-c99a06ee77b7&algo_expid=a72d0c05-ed9a-41f1-8723-c99a06ee77b7-3&btsid=370f59b5-5bf4-438d-9ef8-dbafc59dce1f&ws_ab_test=searchweb0_0,searchweb201602_9,searchweb201603_55)
|
||||||
|
|
||||||
|
#### To do
|
||||||
|
- [x] Add showerthoughts logo
|
||||||
|
- [ ] Better word wrapping
|
||||||
|
|||||||
8
credentials.h
Normal file
8
credentials.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// WIFI
|
||||||
|
const char* ssid = "";
|
||||||
|
const char* password = "";
|
||||||
|
|
||||||
|
// REDDIT
|
||||||
|
const char* host = "www.reddit.com";
|
||||||
|
const int port = 443;
|
||||||
|
const char fingerprint[] = "77:C7:6C:11:70:33:25:EE:F0:6C:3B:E3:0F:15:C2:CB:2A:73:7A:56:F3:40:FD:76:29:1E:06:CB:0D:45:48:2C";
|
||||||
BIN
img/01_Front.jpg
Normal file
BIN
img/01_Front.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
BIN
img/02_Back.jpg
Normal file
BIN
img/02_Back.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
140
logo.h
Normal file
140
logo.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
#include <pgmspace.h>
|
||||||
|
#else
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Used http://javl.github.io/image2cpp/
|
||||||
|
// Settings:
|
||||||
|
// * Background Color -> Black
|
||||||
|
// * Invert Image Colors -> True
|
||||||
|
// * Output: Arduino Code
|
||||||
|
// * Draw Mode: Horizontal - 1 bit per pixel
|
||||||
|
|
||||||
|
const unsigned char logo [] PROGMEM = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x0f, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x1f, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x3f, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x7f, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
|
||||||
|
0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
|
||||||
|
0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
|
||||||
|
0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
|
||||||
|
0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
|
||||||
|
0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
|
||||||
|
0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
|
||||||
|
0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00,
|
||||||
|
0x00, 0x7f, 0x80, 0x00, 0x00, 0x06, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
|
||||||
|
0x00, 0xff, 0x80, 0x00, 0x00, 0x0f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
|
||||||
|
0x00, 0xff, 0x80, 0x00, 0x00, 0x19, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
|
||||||
|
0x01, 0xff, 0x80, 0x00, 0x3c, 0x10, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
|
||||||
|
0x01, 0xff, 0x80, 0x00, 0x76, 0x10, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
|
||||||
|
0x03, 0xff, 0x00, 0x00, 0x63, 0x18, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
|
||||||
|
0x03, 0xff, 0x00, 0x00, 0x43, 0x19, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
|
||||||
|
0x07, 0xff, 0x00, 0x00, 0x61, 0x8f, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||||
|
0x07, 0xff, 0x80, 0x00, 0x39, 0x8e, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||||
|
0x07, 0xff, 0x80, 0x00, 0x1f, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||||
|
0x0f, 0xff, 0x80, 0x00, 0x07, 0xf6, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
|
||||||
|
0x0f, 0xff, 0x80, 0x00, 0x01, 0x83, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
|
||||||
|
0x1f, 0xff, 0x80, 0x00, 0x01, 0x81, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
|
||||||
|
0x1f, 0xff, 0xc0, 0x00, 0xf9, 0x81, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
|
||||||
|
0x1f, 0xff, 0xc0, 0x01, 0x9f, 0x00, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
|
||||||
|
0x1f, 0xff, 0xe0, 0x03, 0x07, 0x80, 0x60, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0,
|
||||||
|
0x3f, 0xff, 0xe0, 0x03, 0x07, 0xc0, 0x30, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xf0, 0x01, 0x8c, 0x70, 0x18, 0x01, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xf8, 0x01, 0xf8, 0x38, 0x0c, 0x01, 0xf8, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xf8, 0x00, 0x70, 0x1c, 0x0e, 0x01, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xe0,
|
||||||
|
0x7f, 0xff, 0xfc, 0x00, 0x00, 0x06, 0x07, 0x01, 0xe0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xfe, 0x00, 0x00, 0x03, 0x03, 0x83, 0xc0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0x80, 0x00, 0x01, 0xc1, 0xc7, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x70, 0x7e, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x38, 0x7c, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x1c, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x0f, 0xf0, 0x00, 0x1f, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xe0, 0x00, 0x3e, 0x03, 0xff, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xc0, 0x00, 0x7c, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0x80, 0x00, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0x00, 0x01, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x1e, 0x00, 0x03, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xc0, 0x03, 0xc7, 0xef, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0x80, 0x0f, 0xff, 0x80, 0xff, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0x00, 0x1f, 0xff, 0x80, 0x1f, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x3e, 0x00, 0x1f, 0xff, 0xc0, 0x0f, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x7c, 0x00, 0x1e, 0x3f, 0xf0, 0x0f, 0xff, 0xf8,
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xf8, 0x00, 0x1e, 0x0f, 0xfc, 0x0f, 0xdf, 0xf8,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xf0, 0x00, 0x1e, 0x03, 0xff, 0x9f, 0x07, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xe0, 0x00, 0x0f, 0x80, 0xff, 0xff, 0x07, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xc0, 0x3c, 0x07, 0xe0, 0x7f, 0xff, 0x07, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x0f, 0x80, 0xfe, 0x03, 0xf8, 0x7f, 0xff, 0x0f, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0x00, 0xff, 0x83, 0xff, 0xf1, 0xff, 0xff, 0xf0,
|
||||||
|
0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3e, 0x01, 0xff, 0xc3, 0xff, 0xe0, 0x3f, 0xff, 0xf0,
|
||||||
|
0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x7c, 0x01, 0xe7, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0xf8, 0x01, 0xe3, 0xff, 0x87, 0xf0, 0x03, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0x01, 0xf1, 0xff, 0x83, 0xfc, 0x00, 0xff, 0xe0,
|
||||||
|
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xe0, 0x00, 0xf8, 0xff, 0x80, 0xfe, 0x00, 0x7f, 0xe0,
|
||||||
|
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0x00, 0x7c, 0x3f, 0xc0, 0x7f, 0x80, 0x7f, 0xc0,
|
||||||
|
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xc0, 0x00, 0x7e, 0x1f, 0xe0, 0x3f, 0xe0, 0x7f, 0xc0,
|
||||||
|
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x80, 0x00, 0x3e, 0x0f, 0xf8, 0x3f, 0xf8, 0xff, 0xc0,
|
||||||
|
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc0, 0x00, 0x1f, 0x07, 0xfc, 0x3f, 0xff, 0xff, 0xc0,
|
||||||
|
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x7c, 0x1f, 0x83, 0xff, 0xff, 0xff, 0xff, 0x80,
|
||||||
|
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xfe, 0x1f, 0xc1, 0xff, 0xf8, 0x7f, 0xff, 0x80,
|
||||||
|
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0x1f, 0xe0, 0x7f, 0xf8, 0x1f, 0xff, 0x00,
|
||||||
|
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xf0, 0x7f, 0xf8, 0x07, 0xff, 0x00,
|
||||||
|
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe3, 0xff, 0xf8, 0x7f, 0xfc, 0x03, 0xff, 0x00,
|
||||||
|
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe3, 0xff, 0xf8, 0x7f, 0xfe, 0x01, 0xfe, 0x00,
|
||||||
|
0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xe1, 0xf1, 0xff, 0xff, 0xff, 0x81, 0xfe, 0x00,
|
||||||
|
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf1, 0xf0, 0xff, 0xe3, 0xff, 0xc3, 0xfc, 0x00,
|
||||||
|
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0x7f, 0xc1, 0xff, 0xff, 0xfc, 0x00,
|
||||||
|
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf0, 0x7f, 0xc0, 0x7f, 0xff, 0xf8, 0x00,
|
||||||
|
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x78, 0x3f, 0xc0, 0x3f, 0xff, 0xf8, 0x00,
|
||||||
|
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7c, 0x1f, 0xe0, 0x1f, 0xff, 0xf0, 0x00,
|
||||||
|
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7c, 0x1f, 0xf0, 0x0f, 0xff, 0xe0, 0x00,
|
||||||
|
0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7e, 0x1f, 0xf0, 0x07, 0xff, 0xe0, 0x00,
|
||||||
|
0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0x1f, 0xf8, 0x03, 0xff, 0xc0, 0x00,
|
||||||
|
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xfc, 0x01, 0xff, 0x80, 0x00,
|
||||||
|
0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1f, 0xcf, 0xff, 0xfe, 0x00, 0xff, 0x80, 0x00,
|
||||||
|
0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x87, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00,
|
||||||
|
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x87, 0xf1, 0xff, 0x81, 0xfe, 0x00, 0x00,
|
||||||
|
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x83, 0xf0, 0xff, 0xc1, 0xfc, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc1, 0xf0, 0x7f, 0xe7, 0xf8, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xc1, 0xf0, 0x7f, 0xff, 0xf8, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xc0, 0xf8, 0x3f, 0xff, 0xf0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xe0, 0xf8, 0x1f, 0xff, 0xe0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xe0, 0x7c, 0x1f, 0xff, 0xc0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7c, 0x1f, 0xff, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x1f, 0xfe, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x3f, 0xfc, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7c, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user