Skip to content

Instantly share code, notes, and snippets.

@Bolukan
Created March 14, 2019 18:25
Show Gist options
  • Save Bolukan/1f2fb0019b8270b20eda04caeb3c2e73 to your computer and use it in GitHub Desktop.
Save Bolukan/1f2fb0019b8270b20eda04caeb3c2e73 to your computer and use it in GitHub Desktop.
David Watts - ESP-12 Social Media Counter Update - https://www.youtube.com/watch?v=m92fLt6ndIQ
/************************************************************************************
GxEPD_SPI_TestExample : test example for e-Paper displays from Dalian Good Display Co., Ltd.: www.good-display.com
based on Demo Example from Good Display, now available on http://www.good-display.com/download_list/downloadcategoryid=34&isMode=false.html
Author : J-M Zingg
modified by :
Version : 2.0
Support: limited, provided as example, no claim to be fit for serious use
connection to the e-Paper display is through DESTM32-S2 connection board, available from Good Display
DESTM32-S2 pinout (top, component side view):
|-------------------------------------------------
| VCC |o o| VCC 5V, not needed
| GND |o o| GND
| 3.3 |o o| 3.3V
| nc |o o| nc
| nc |o o| nc
| nc |o o| nc
| MOSI |o o| CLK=SCK
| SS=DC |o o| D/C=RS // Slave Select = Device Connect |o o| Data/Command = Register Select
| RST |o o| BUSY
| nc |o o| BS, connect to GND
|-------------------------------------------------
*/
//50x50 pixels
#define yt3_width 100
#define yt3_height 61
static unsigned char youtube[112] = { /* 0X00,0X01,0X20,0X00,0X1C,0X00, */
0XFF, 0XF8, 0X0F, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF, 0X00, 0X00, 0XFF, 0XFE, 0X00, 0X00, 0X7F,
0XFC, 0X00, 0X00, 0X3F, 0XF8, 0X00, 0X00, 0X1F, 0XF0, 0X00, 0X00, 0X0F, 0XF0, 0X00, 0X00, 0X07,
0XE0, 0X7F, 0XFF, 0X07, 0XE0, 0XFF, 0XFF, 0X87, 0XC1, 0XFF, 0X3F, 0XC3, 0XC1, 0XFE, 0X3F, 0XC3,
0XC1, 0XFC, 0X3F, 0XC3, 0XC1, 0XF8, 0X3F, 0XC3, 0XC1, 0XF8, 0X3F, 0XC3, 0XC1, 0XFC, 0X3F, 0XC3,
0XC1, 0XFE, 0X3F, 0XC3, 0XE1, 0XFF, 0X3F, 0XC3, 0XE0, 0XFF, 0XFF, 0X87, 0XE0, 0X7F, 0XFF, 0X07,
0XE0, 0X00, 0X00, 0X07, 0XF0, 0X00, 0X00, 0X0F, 0XF8, 0X00, 0X00, 0X1F, 0XFC, 0X00, 0X00, 0X3F,
0XFE, 0X00, 0X00, 0X7F, 0XFF, 0X00, 0X00, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF, 0XF8, 0X0F, 0XFF,
};
const unsigned char insta[112] = { /* 0X00,0X01,0X20,0X00,0X1C,0X00, */
0XFF, 0XF8, 0X0F, 0XFF, 0XFF, 0XE0, 0X03, 0XFF, 0XFF, 0X80, 0X00, 0XFF, 0XFF, 0X00, 0X00, 0X7F,
0XFE, 0X00, 0X00, 0X3F, 0XFC, 0X00, 0X00, 0X1F, 0XF8, 0X1F, 0X8C, 0X0F, 0XF8, 0X7F, 0XFF, 0X0F,
0XF0, 0X47, 0XFF, 0X07, 0XE0, 0X47, 0XFF, 0X07, 0XE0, 0X47, 0XFF, 0X07, 0XE0, 0X7E, 0X3B, 0X03,
0XE0, 0X6C, 0X11, 0X03, 0XE0, 0X4C, 0X11, 0X03, 0XE0, 0X4C, 0X11, 0X03, 0XE0, 0X4C, 0X11, 0X03,
0XE0, 0X46, 0X31, 0X03, 0XE0, 0X43, 0XE1, 0X07, 0XF0, 0X40, 0X01, 0X07, 0XF0, 0X40, 0X03, 0X07,
0XF0, 0X7F, 0XFE, 0X0F, 0XF8, 0X3F, 0XFC, 0X1F, 0XFC, 0X00, 0X00, 0X1F, 0XFE, 0X00, 0X00, 0X3F,
0XFE, 0X00, 0X00, 0X7F, 0XFF, 0X80, 0X00, 0XFF, 0XFF, 0XE0, 0X03, 0XFF, 0XFF, 0XF8, 0X0F, 0XFF,
};
const unsigned char twitter[112] = { /* 0X00,0X01,0X20,0X00,0X1C,0X00, */
0XFF, 0XF8, 0X0F, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF, 0X00, 0X00, 0XFF, 0XFE, 0X00, 0X00, 0X7F,
0XFC, 0X00, 0X00, 0X3F, 0XF8, 0X00, 0X00, 0X1F, 0XF0, 0X3C, 0X00, 0X0F, 0XE1, 0XFF, 0X00, 0X8F,
0XE1, 0XFF, 0X03, 0X87, 0XE1, 0XFF, 0X07, 0X87, 0XC0, 0XFF, 0X3F, 0X83, 0XC0, 0XFF, 0XFF, 0X03,
0XC0, 0XFF, 0XFF, 0X83, 0XC0, 0XFF, 0XFF, 0X83, 0XC0, 0X7F, 0XFF, 0X03, 0XC0, 0X7F, 0XFE, 0X03,
0XC0, 0X3F, 0XFE, 0X03, 0XE0, 0X3F, 0XFE, 0X07, 0XE0, 0X1F, 0XF8, 0X07, 0XE0, 0X0F, 0XF8, 0X07,
0XF0, 0X03, 0XFF, 0X8F, 0XF0, 0X00, 0XFF, 0X0F, 0XF8, 0X00, 0X00, 0X1F, 0XF8, 0X00, 0X00, 0X3F,
0XFE, 0X00, 0X00, 0X3F, 0XFF, 0X00, 0X00, 0XFF, 0XFF, 0XC0, 0X03, 0XFF, 0XFF, 0XF8, 0X2F, 0XFF,
};
const unsigned char david[5000] = { /* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XB5, 0XD5, 0X55, 0X55, 0X57, 0X55, 0X50, 0X03, 0X55,
0X56, 0XDB, 0XB6, 0XEF, 0X7B, 0X6D, 0XED, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0X6A, 0XAA, 0XAA, 0XAE, 0XAC, 0X80, 0X00, 0X01, 0X6A, 0XAD, 0XB5, 0X6D, 0X5A, 0XD6, 0XDB, 0X5A,
0XAA, 0XD5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XB5, 0XD5, 0X55, 0X53, 0X40, 0X04, 0X08,
0X00, 0XB5, 0XFA, 0XDA, 0XB6, 0XED, 0X6B, 0X6D, 0XAB, 0X55, 0X2A, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XDA, 0XAA, 0XAA, 0XA8, 0X00, 0X00, 0X00, 0X82, 0X0A, 0X07, 0X6D, 0XDB, 0X56, 0XB5,
0XB6, 0XD5, 0XAA, 0XD5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X55, 0X55, 0X55, 0X50, 0X00,
0X02, 0X80, 0X00, 0X00, 0X00, 0XDA, 0XB6, 0XAD, 0X6B, 0X6A, 0XAA, 0X55, 0X2A, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFE, 0XEA, 0XEA, 0XAB, 0XA0, 0X00, 0X00, 0X10, 0X1E, 0X00, 0X40, 0XB7, 0X6D,
0X7B, 0XD6, 0XD5, 0X55, 0XAA, 0XD5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XB5, 0X55, 0X55,
0X00, 0X00, 0X28, 0X45, 0X42, 0XAA, 0X14, 0X2D, 0XB6, 0XAD, 0X6B, 0X6A, 0XAA, 0XD5, 0X2A, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFB, 0XDA, 0XAA, 0XAA, 0X00, 0X03, 0X01, 0X20, 0X28, 0X09, 0X02,
0X16, 0XDB, 0X56, 0XB5, 0XB5, 0X55, 0X55, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XB5,
0X75, 0X54, 0X00, 0X00, 0X00, 0X10, 0X00, 0X04, 0XE0, 0X81, 0XB6, 0XEB, 0X6B, 0X6A, 0XAA, 0XAA,
0X54, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD6, 0XAA, 0XB0, 0X00, 0X00, 0X00, 0X00, 0X00,
0X01, 0X18, 0X28, 0X6D, 0X56, 0XD6, 0XD5, 0X55, 0XAA, 0XD5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFD, 0X6A, 0XD5, 0X40, 0X00, 0X20, 0X00, 0X00, 0X00, 0X2A, 0X54, 0X00, 0XB6, 0XBB, 0X6B, 0X6A,
0XAA, 0X55, 0X2A, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XB5, 0X6A, 0X80, 0X00, 0X00, 0X00,
0X00, 0X00, 0X01, 0X4F, 0X00, 0X1B, 0X55, 0XB5, 0XB5, 0X55, 0XAA, 0XD5, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XEB, 0X55, 0X44, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X11, 0XD0, 0X0E, 0XAB,
0X6A, 0XAA, 0XAB, 0X55, 0X2A, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDA, 0XAD, 0X09, 0X10,
0X00, 0X00, 0X00, 0X00, 0X00, 0X20, 0X28, 0X05, 0X76, 0XD5, 0X55, 0X5A, 0X55, 0X55, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X6A, 0XD8, 0X20, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X40, 0X04,
0X06, 0XAB, 0X6E, 0XAA, 0XA5, 0XAA, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF5, 0X68,
0X80, 0X00, 0X15, 0X74, 0X00, 0X00, 0X00, 0X00, 0X02, 0X03, 0XDD, 0XB3, 0X55, 0X5A, 0XAA, 0XAB,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XB0, 0X00, 0X04, 0X00, 0X8B, 0XF0, 0X01, 0X00,
0X01, 0X01, 0X40, 0XAB, 0X6E, 0XAA, 0XD5, 0X55, 0X54, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XD5, 0X60, 0X00, 0X10, 0X00, 0X52, 0XAE, 0X00, 0X11, 0X48, 0X40, 0X90, 0X76, 0XD5, 0X55, 0XAA,
0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7A, 0X80, 0X00, 0X00, 0X01, 0X29, 0X54,
0X00, 0X06, 0X81, 0X30, 0X00, 0X5B, 0X6A, 0XAA, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XED, 0X10, 0X04, 0X00, 0X00, 0X34, 0X03, 0X00, 0X90, 0X00, 0X00, 0X20, 0X2D, 0XB5,
0X55, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X80, 0X00, 0X00, 0X02,
0X05, 0X40, 0XC0, 0X0A, 0X50, 0X04, 0X8A, 0X1B, 0X6E, 0XAB, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XF4, 0X10, 0X00, 0X02, 0XAC, 0X04, 0X00, 0X01, 0X50, 0X00, 0X02, 0X00,
0X06, 0XD5, 0XD6, 0XAA, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X78, 0X40, 0X00,
0X00, 0X00, 0X00, 0X00, 0X00, 0XA0, 0X00, 0X00, 0X20, 0X8D, 0X6A, 0XAB, 0X55, 0X55, 0X55, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X03, 0X48, 0X00,
0X01, 0X00, 0X06, 0XB7, 0X55, 0XAA, 0XAA, 0XAA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0,
0X80, 0X00, 0X4A, 0X00, 0X00, 0X00, 0X02, 0X00, 0X00, 0X08, 0X00, 0X03, 0X6A, 0XAB, 0X55, 0X5D,
0XDD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X0C,
0X20, 0X00, 0X02, 0X00, 0X06, 0XDD, 0X76, 0XAE, 0XAA, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0X48, 0X00, 0X00, 0X02, 0X00, 0X00, 0X00, 0X30, 0X00, 0X00, 0X14, 0X00, 0X01, 0X6B, 0XAB,
0X55, 0XD5, 0X75, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE0, 0X00, 0X00, 0X00, 0X00, 0X00,
0X00, 0X00, 0X80, 0X00, 0X4A, 0X80, 0X01, 0XB5, 0X5D, 0XBA, 0XBB, 0XAE, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFD, 0X92, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X00, 0X01, 0X15, 0X20, 0X00,
0XEA, 0XEB, 0X55, 0X55, 0X55, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X20, 0X00, 0X00, 0X00,
0X00, 0X00, 0X00, 0X02, 0X00, 0X02, 0X69, 0X40, 0X00, 0XD7, 0X56, 0XEE, 0XEE, 0XFB, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X01, 0X29, 0X14,
0XB0, 0X00, 0X6A, 0XBB, 0X55, 0X55, 0XAE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X00, 0X00,
0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0XA8, 0X84, 0XD6, 0X94, 0X00, 0X3D, 0XD5, 0XBB, 0XBA, 0XD5,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X80, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X12, 0X15,
0X6B, 0X2D, 0X68, 0X00, 0X16, 0XAB, 0X55, 0X57, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0X00, 0X00, 0X00, 0X10, 0X00, 0X00, 0X04, 0X22, 0XE5, 0X4A, 0X5A, 0X9A, 0X00, 0X2D, 0X76, 0XEE,
0XFD, 0X75, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X49,
0X4D, 0X1A, 0XB5, 0XA7, 0X6C, 0X00, 0X1B, 0XAD, 0XBB, 0XAB, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X24, 0XA5, 0XD5, 0XDE, 0XDB, 0XB7, 0X00, 0X0D,
0XF6, 0XDD, 0XFD, 0X6B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X00, 0X00, 0X00, 0X00, 0X00,
0X02, 0X93, 0X5A, 0X2B, 0X6B, 0X76, 0XDA, 0XC0, 0X07, 0X5B, 0X6B, 0X57, 0XBD, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00, 0X00, 0X00, 0X14, 0X26, 0X55, 0XDE, 0XDE, 0XED, 0XB7,
0X88, 0X06, 0XF6, 0XDE, 0XFD, 0X6B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00, 0X00, 0X00,
0X00, 0X01, 0X41, 0XD9, 0XAA, 0XB5, 0XF7, 0XBB, 0X6D, 0X52, 0X03, 0XAD, 0XB5, 0XAB, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0X00, 0X00, 0X00, 0X00, 0X04, 0X2A, 0X56, 0XDF, 0XDF, 0X7D,
0XED, 0XBF, 0XA1, 0X03, 0XF6, 0XFF, 0XFF, 0X6D, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X00,
0X00, 0X00, 0X44, 0X52, 0X95, 0XAD, 0X75, 0X77, 0XFF, 0X7F, 0XDA, 0XD9, 0X00, 0XDF, 0XD5, 0X55,
0XB7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0X00, 0X00, 0X00, 0X88, 0X84, 0X25, 0X7B, 0XEF,
0XFF, 0XFF, 0XF7, 0X7F, 0XD0, 0X81, 0XBA, 0XBF, 0XFF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XF8, 0X00, 0X00, 0X2A, 0X22, 0X29, 0XDB, 0XD6, 0XBF, 0XFF, 0XFE, 0XFE, 0XD6, 0XAC, 0X80, 0XEF,
0XEA, 0XAB, 0XED, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0X00, 0X02, 0X01, 0X11, 0X54, 0X55,
0X7F, 0XFF, 0XBF, 0XFF, 0XB7, 0XFF, 0XF6, 0X40, 0X75, 0X7F, 0XFD, 0X77, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XF8, 0X00, 0X00, 0XAA, 0XA4, 0XAB, 0XAF, 0XF7, 0XFE, 0XEF, 0XFF, 0XFB, 0XB5, 0XA9,
0X24, 0X5F, 0XD5, 0X57, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X15, 0X45, 0X49,
0X2A, 0X7A, 0XDE, 0XFF, 0XFF, 0XFE, 0XEE, 0XFF, 0X7B, 0X40, 0XFA, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X00, 0X40, 0XAA, 0X95, 0X55, 0XD7, 0XFF, 0XBB, 0XFF, 0XFF, 0XFF,
0XED, 0XD0, 0X10, 0X57, 0XED, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF2, 0X40, 0X2A,
0X55, 0X4A, 0XAE, 0XFF, 0XBB, 0XFF, 0XFF, 0XFF, 0XFB, 0X7F, 0X7D, 0X08, 0X3F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X01, 0X55, 0XAA, 0XB5, 0X5B, 0X5E, 0XED, 0XFF, 0XFF,
0XFD, 0XFF, 0XDB, 0XEA, 0X84, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF2,
0X00, 0X55, 0X2A, 0XAA, 0XB6, 0XFF, 0XFF, 0XFF, 0XFF, 0XEF, 0X6E, 0XF7, 0XB4, 0X00, 0X3F, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE4, 0X01, 0XAA, 0XD5, 0X55, 0X6D, 0XDF, 0XFF,
0X6F, 0XF6, 0XFF, 0XDB, 0XBD, 0XEA, 0X94, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XE0, 0X00, 0XAA, 0X55, 0X6A, 0XB6, 0XF6, 0XFF, 0XFB, 0XBF, 0XBD, 0XFE, 0XEF, 0X7A, 0X40,
0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE0, 0X01, 0X55, 0XAA, 0XD5, 0XDB,
0XDF, 0XBF, 0XFF, 0XFF, 0XFF, 0XF7, 0XBB, 0XAD, 0X14, 0X0F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XC0, 0X02, 0XAB, 0X2A, 0XAB, 0XB7, 0X7B, 0XF5, 0XFF, 0XFF, 0XFB, 0XBE, 0XEF,
0XFA, 0XA0, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X82, 0X05, 0X54, 0XD5,
0X56, 0XED, 0XDE, 0XDF, 0XFF, 0XF6, 0XFF, 0X7F, 0XDD, 0X55, 0X0A, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X02, 0XAB, 0X55, 0XAB, 0X77, 0X6F, 0X7F, 0XFE, 0XFF, 0XFF,
0XDB, 0X7F, 0XFE, 0XA0, 0X9F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X82, 0X01,
0X56, 0XAA, 0X5D, 0XDD, 0XFF, 0XF6, 0XDF, 0XBD, 0XD5, 0XFF, 0XF7, 0XAA, 0X8A, 0X2F, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X0A, 0XAD, 0X55, 0XAB, 0XB7, 0X5B, 0XDF, 0XFD,
0XEB, 0X7F, 0XB6, 0XDE, 0XFD, 0X20, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0X80, 0X02, 0XD2, 0XAA, 0XDE, 0XFD, 0XFF, 0X7D, 0XF7, 0X7F, 0XFF, 0XFD, 0XB7, 0XAA, 0X85, 0X3F,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X09, 0X6D, 0X55, 0X6B, 0X56, 0XAF,
0XF7, 0X5D, 0XFF, 0XFB, 0X7F, 0XFF, 0XFE, 0XA0, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0X80, 0X02, 0X9A, 0XAA, 0X9D, 0XFB, 0XFD, 0XFB, 0XF7, 0XFF, 0XFF, 0XF6, 0XF6, 0XD5,
0X4A, 0X9F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X05, 0X75, 0X55, 0X6B,
0X56, 0XB7, 0X57, 0X5F, 0XFF, 0XDF, 0XFF, 0XAF, 0XBE, 0X90, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X09, 0X4A, 0XAA, 0XB6, 0XFD, 0XED, 0XFD, 0XFF, 0XFF, 0XFF, 0XDD,
0XFD, 0XEB, 0X44, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X05, 0X6B,
0X55, 0X5B, 0X56, 0XBE, 0XAF, 0XFF, 0XFF, 0XFD, 0XF7, 0XBF, 0X7D, 0X22, 0X1F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X01, 0X54, 0XAA, 0XAA, 0XFB, 0XEB, 0XFF, 0X77, 0XFF,
0XEF, 0XFE, 0XDB, 0XB7, 0XC8, 0X9F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80,
0X0A, 0XAB, 0X55, 0X57, 0XAF, 0XBF, 0XFB, 0XFF, 0XB7, 0XFB, 0XAD, 0XFE, 0XED, 0X12, 0X1F, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X11, 0X54, 0XAA, 0XAD, 0X7E, 0XFD, 0XBF,
0XDD, 0XFF, 0X7F, 0XFF, 0XBB, 0XFB, 0XC0, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XC0, 0X0A, 0XAA, 0XAB, 0XF7, 0XAF, 0XDF, 0XED, 0X76, 0XDD, 0XDF, 0XFF, 0XFE, 0XBD, 0X54,
0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X01, 0X55, 0X5A, 0X5A, 0XFB,
0X77, 0XFF, 0XDF, 0X77, 0XFD, 0XFF, 0XFF, 0XF7, 0XA2, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0X80, 0X05, 0X55, 0X55, 0XB7, 0X57, 0XFE, 0XBB, 0X7B, 0XDF, 0XFF, 0XFF, 0XFF,
0XDD, 0X44, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X80, 0X12, 0XAA, 0XAA,
0XD5, 0XFE, 0XF7, 0XF6, 0XDE, 0XFD, 0XF7, 0XDD, 0XFF, 0X77, 0XA8, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC0, 0X09, 0X55, 0X55, 0X6A, 0XAB, 0XBE, 0XDF, 0X6F, 0X57, 0X7D,
0XFF, 0XFF, 0XFA, 0XD2, 0X9F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE8, 0X02,
0XAA, 0XAA, 0X95, 0X76, 0XFB, 0X7B, 0XF5, 0XFD, 0XEF, 0XFF, 0XFF, 0XDF, 0X68, 0X5F, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE0, 0X05, 0X55, 0X55, 0X6A, 0XAD, 0XAF, 0XEE, 0XDF,
0XAB, 0XBB, 0X6F, 0XFF, 0XFA, 0XD2, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XE0, 0X12, 0XAA, 0XAA, 0XBD, 0XFB, 0XFF, 0X7F, 0XB5, 0X7E, 0XEF, 0XFF, 0XFF, 0XD7, 0XB0, 0XBF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE0, 0X09, 0X55, 0X55, 0X56, 0XAD, 0X55,
0XFA, 0XDF, 0XAB, 0X7A, 0XBF, 0XFF, 0XFA, 0XE8, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XF8, 0X02, 0XAA, 0XAA, 0XAD, 0X76, 0XFF, 0XAF, 0X6A, 0XFD, 0XAF, 0XD5, 0XFF, 0XFF,
0XB1, 0X1F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X05, 0X55, 0X55, 0X5A,
0XAD, 0X55, 0X7E, 0XDD, 0XAB, 0X7D, 0X7F, 0X5F, 0XF5, 0X74, 0X3F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0X2A, 0XAA, 0XAA, 0XAB, 0X56, 0XBF, 0XD5, 0XB7, 0X5D, 0XD7, 0XD5,
0XFF, 0XDF, 0XF1, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0X02, 0XAA,
0XD5, 0X55, 0X6B, 0X55, 0X7E, 0XDA, 0XEA, 0XBA, 0XBE, 0XAB, 0XFA, 0XB8, 0X3F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFC, 0X09, 0X55, 0X2A, 0XAA, 0X94, 0XAA, 0XAB, 0XB7, 0XB5,
0X57, 0X63, 0XFE, 0XFF, 0XDA, 0X97, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8,
0X02, 0XAA, 0XD5, 0XAA, 0XB5, 0X55, 0X5E, 0XAD, 0X6A, 0XD4, 0X4D, 0X57, 0XFE, 0XB4, 0X3F, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF9, 0X15, 0X55, 0X6A, 0X55, 0X4A, 0XAA, 0XAB,
0X56, 0XAA, 0XA2, 0XB2, 0XED, 0XBB, 0XF9, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFC, 0X05, 0X5A, 0XB5, 0XAA, 0XAA, 0XAA, 0XD5, 0XAB, 0X55, 0X10, 0X09, 0X56, 0XDE, 0XBC,
0X36, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X0A, 0XA5, 0X6B, 0X55, 0X55,
0X55, 0X2B, 0X56, 0XA8, 0X80, 0X04, 0X15, 0X6B, 0XED, 0X5D, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFC, 0X15, 0X5A, 0XD6, 0XAA, 0XAA, 0X25, 0X55, 0X55, 0X50, 0X00, 0X00, 0XA5,
0X5F, 0X5A, 0X39, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X0A, 0XA5, 0X7B,
0X55, 0X55, 0X4A, 0XAA, 0XAA, 0XA4, 0X00, 0XAA, 0X55, 0X55, 0XFC, 0XA3, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X0D, 0X5A, 0XAD, 0XAA, 0XA0, 0XA1, 0X55, 0X55, 0X52, 0X42,
0X01, 0X2A, 0XAA, 0XBE, 0X67, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X82,
0XA5, 0X55, 0X55, 0X0A, 0X14, 0X2A, 0XAB, 0X48, 0X00, 0X00, 0X95, 0X55, 0XED, 0X33, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X0D, 0X5A, 0XEA, 0XA8, 0X20, 0X41, 0X55, 0X55,
0X50, 0X00, 0X00, 0X02, 0X2B, 0X5E, 0X77, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0X86, 0XA5, 0X55, 0X52, 0X80, 0X02, 0X0A, 0XFE, 0X80, 0X00, 0X00, 0X05, 0X55, 0XFD, 0X5B,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X85, 0X5A, 0XAA, 0XA8, 0X00, 0X08,
0XAB, 0X57, 0X50, 0X00, 0X00, 0X00, 0X8A, 0XAE, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XC2, 0XA5, 0X55, 0X40, 0X00, 0X00, 0X05, 0XFD, 0XA0, 0X00, 0X20, 0XC0, 0X25,
0XFF, 0X6B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X87, 0X5A, 0XA8, 0X90,
0X00, 0X00, 0X2A, 0XB7, 0X40, 0X00, 0X00, 0X20, 0X15, 0X57, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC2, 0XAD, 0X52, 0X20, 0X08, 0X00, 0X15, 0XFF, 0X90, 0X00, 0X02,
0XC4, 0X4B, 0XFE, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X43, 0X55,
0X49, 0X11, 0X00, 0X00, 0X0A, 0XFF, 0XC0, 0X08, 0X00, 0XAA, 0X2A, 0XAF, 0X5F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X82, 0XAA, 0X94, 0X44, 0X00, 0X00, 0X03, 0X7F, 0XA4,
0X08, 0X00, 0XD5, 0XD5, 0XFB, 0XCF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
0X25, 0X55, 0X20, 0X90, 0X00, 0X00, 0X06, 0XFF, 0XC1, 0X00, 0X01, 0XAA, 0XAF, 0XAF, 0X9F, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0X82, 0XAA, 0X95, 0X00, 0X00, 0X00, 0X0B,
0XFF, 0XAA, 0X02, 0X2F, 0X55, 0X7A, 0XFD, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFD, 0X69, 0X55, 0X48, 0X80, 0X00, 0X00, 0X01, 0X7F, 0XC5, 0X09, 0XD5, 0XAB, 0XAF, 0X57,
0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0X91, 0XAA, 0XA2, 0X00, 0X00,
0X00, 0X05, 0XFF, 0XF2, 0XA4, 0X02, 0X56, 0XFD, 0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0X29, 0X55, 0X04, 0X00, 0X00, 0X21, 0X01, 0XFF, 0XE5, 0X40, 0XAA, 0XAD,
0XAF, 0X55, 0X7B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X91, 0XAA, 0X50,
0X0C, 0X00, 0X40, 0X07, 0X7F, 0XDA, 0X02, 0X05, 0X57, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XC8, 0XA9, 0X08, 0X04, 0X00, 0X01, 0X41, 0XFF, 0XED, 0X50,
0XA0, 0XAB, 0XFF, 0XEB, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD4,
0XD4, 0XA0, 0X02, 0X00, 0X00, 0X2A, 0XBF, 0XF6, 0XA8, 0X15, 0X5E, 0XDF, 0X7D, 0XBF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE4, 0XA9, 0X00, 0X20, 0X05, 0X0A, 0X45, 0XFF,
0XED, 0X6A, 0XA2, 0XBB, 0XFF, 0XFB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XD9, 0X54, 0X40, 0X8A, 0XB8, 0X00, 0X12, 0XFF, 0XDB, 0XDD, 0X5D, 0XEF, 0XFF, 0XD6, 0XBF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XE8, 0XAA, 0XA2, 0X50, 0X01, 0X01,
0X4B, 0X7F, 0XFD, 0X6A, 0XEE, 0XBF, 0XFF, 0XFB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XF5, 0X55, 0X09, 0X0A, 0X80, 0X04, 0X25, 0XDF, 0XF7, 0XBF, 0XBB, 0XFF, 0XFF,
0XEE, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0X6A, 0X52, 0X54,
0X14, 0X29, 0X49, 0X7F, 0XEE, 0XFB, 0X77, 0XFF, 0XFF, 0XFD, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF2, 0XAA, 0XA5, 0X21, 0X41, 0X44, 0XA6, 0XFF, 0XFB, 0XFF, 0XEF,
0X7F, 0XFF, 0XD7, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF8, 0XD5,
0X52, 0X94, 0XA8, 0X36, 0X92, 0XBF, 0XDD, 0X6F, 0XFF, 0XFF, 0XFF, 0XFB, 0XBF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0X2A, 0XAA, 0XAA, 0X05, 0X49, 0X6A, 0XFF, 0XF7,
0XFF, 0XFF, 0XFF, 0XFF, 0XEE, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFC, 0XD5, 0X55, 0X50, 0XA9, 0X5B, 0X55, 0X5F, 0XFE, 0XBF, 0XFF, 0XFF, 0XBF, 0XBD, 0XBF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0X6A, 0XAA, 0XAD, 0X56, 0XA4, 0XAA,
0XFF, 0XEB, 0XFF, 0XFF, 0XFF, 0XFF, 0XEB, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFD, 0X2A, 0XAA, 0XA5, 0X52, 0XDB, 0X55, 0X7F, 0XFE, 0XF7, 0XFF, 0XFF, 0XFE, 0XFD,
0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XB5, 0X55, 0X5A, 0XAD,
0X76, 0XAA, 0XDF, 0XF7, 0XDF, 0XFF, 0XFF, 0XFF, 0XB7, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XAD, 0X55, 0X5B, 0XED, 0X55, 0XBF, 0XFD, 0XFF, 0XFF, 0XFF,
0XFF, 0XEE, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF5, 0X55, 0X55,
0XAA, 0XAE, 0XBA, 0XAA, 0XFF, 0XF7, 0XB7, 0XFF, 0XFF, 0XFE, 0XDB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XAA, 0XD7, 0X57, 0XD5, 0X55, 0X5F, 0XFF, 0XFD,
0XFF, 0XFF, 0XFF, 0XFD, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0X55, 0X55, 0XBA, 0XFD, 0X7A, 0XAA, 0XFF, 0XFA, 0XEF, 0XFF, 0XFF, 0XFE, 0XD7, 0XEF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAA, 0XAB, 0X65, 0XAB, 0XD5, 0X55, 0XDF,
0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0XFD, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XF7, 0XDA, 0XAD, 0XBF, 0X76, 0XBA, 0XAB, 0X7F, 0XFF, 0X77, 0XFF, 0XFF, 0XFF, 0XBB, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X4A, 0XA4, 0XD5, 0XBB, 0XD5,
0X55, 0XAF, 0XFF, 0XDD, 0XFF, 0XFF, 0XFE, 0XDE, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XB5, 0X5B, 0XAA, 0XED, 0X7A, 0XAA, 0XFF, 0XFF, 0X76, 0XFF, 0XFF, 0XFF,
0XEB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X65, 0X55, 0X5F,
0XDB, 0XD6, 0XAB, 0XEF, 0XFF, 0XEF, 0XFF, 0XFF, 0XFF, 0XBE, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFB, 0X9A, 0XAA, 0XAA, 0XB6, 0XB9, 0X56, 0XDF, 0XFE, 0XFB, 0XFF,
0XFF, 0XFD, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XE5,
0X55, 0X7F, 0XDF, 0XD5, 0X2B, 0X7F, 0XFF, 0XFE, 0XDF, 0XFF, 0XFF, 0X7A, 0XDF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X5A, 0XAA, 0XD5, 0X75, 0X6D, 0X55, 0XBF, 0XFF,
0X7B, 0X7D, 0XFF, 0XFF, 0XEF, 0X6F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFD, 0XF5, 0X55, 0XBF, 0XEF, 0XDA, 0XAB, 0XEF, 0XFE, 0XF7, 0XF7, 0XFF, 0XFD, 0XBD, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X4A, 0XAA, 0XD5, 0X5A, 0XA5, 0X2E,
0XBF, 0XFF, 0XFD, 0XDF, 0XFF, 0XFF, 0XF7, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFB, 0XF5, 0X55, 0X6F, 0XEF, 0XDA, 0XA3, 0X7F, 0XFE, 0XBF, 0X6B, 0XFF, 0XFE, 0XFD,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X5A, 0XAB, 0X5A, 0XB5,
0X75, 0X5A, 0XDF, 0XFB, 0XFD, 0XFE, 0XFF, 0XFF, 0XF7, 0X57, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFA, 0XAA, 0XB7, 0XEF, 0XAA, 0X95, 0XBF, 0XFF, 0XBB, 0XDB, 0XFF,
0XFB, 0XDE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0X55, 0X55,
0X5D, 0X5A, 0XD5, 0X6A, 0XEF, 0XFA, 0XEE, 0XF6, 0XFF, 0XFF, 0XF5, 0XAF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XAA, 0XAB, 0XEF, 0X55, 0X2B, 0X7F, 0XFF, 0X77,
0XFB, 0X5F, 0XFD, 0XFE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD,
0XAD, 0X55, 0X56, 0XB5, 0XAA, 0XD4, 0XAF, 0XF6, 0XAB, 0XDD, 0XEF, 0XFF, 0XDB, 0XD7, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7A, 0XAA, 0XAD, 0X6F, 0X6A, 0XAB, 0XFD,
0XFD, 0X56, 0XFF, 0XBF, 0XFF, 0XFF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFB, 0XD5, 0X55, 0X56, 0XBA, 0X95, 0X55, 0X57, 0XF6, 0X1F, 0XF6, 0XED, 0XEF, 0XB5, 0XDF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFA, 0XAA, 0XAB, 0X55, 0X55,
0X4A, 0XBA, 0XF8, 0X0D, 0XFB, 0X77, 0XBE, 0XFF, 0X6F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XAD, 0X55, 0X56, 0XEA, 0XAA, 0XA1, 0X55, 0XAC, 0X3E, 0XFF, 0XDA, 0XFF,
0XED, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFD, 0X55, 0X55,
0X95, 0X55, 0X48, 0XAD, 0X58, 0XAB, 0XFE, 0XF7, 0XED, 0XBB, 0XEF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFB, 0XAA, 0XAA, 0XAA, 0X6A, 0XAA, 0XA0, 0X52, 0XA2, 0XBE, 0XFF,
0XAD, 0X7F, 0XEE, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFD,
0X55, 0X55, 0XAA, 0X55, 0X54, 0X2A, 0XA9, 0X57, 0XAE, 0XFF, 0XB6, 0XF7, 0XDF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD6, 0XAA, 0XAA, 0X55, 0X55, 0X42, 0X15, 0X45,
0X5A, 0XFB, 0XDA, 0XFF, 0XDD, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFD, 0XBE, 0XAA, 0XAA, 0XD5, 0X55, 0X54, 0X00, 0X0A, 0XB5, 0XB6, 0XF7, 0XAD, 0XB7, 0XDF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0X6A, 0XAA, 0XAA, 0XAA, 0XAA, 0XA0,
0X00, 0X05, 0X4A, 0XDD, 0XDE, 0XFF, 0X7D, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X55, 0X14, 0X00, 0X15, 0X6E, 0XAE, 0XEF, 0X5B, 0XB7,
0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X56, 0XAA, 0XAA, 0XAA,
0XAA, 0XA1, 0X00, 0X0A, 0X93, 0X55, 0X5B, 0XED, 0XDE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X55, 0X55, 0X55, 0X50, 0X08, 0X00, 0X15, 0X76, 0XAA, 0XF7,
0X5B, 0X75, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF5, 0X56, 0XAA,
0XAA, 0XAA, 0XA5, 0X42, 0X88, 0X82, 0X8A, 0XDD, 0X2D, 0XF6, 0XDF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFB, 0X55, 0X55, 0X55, 0X50, 0X28, 0X04, 0X2A, 0XD5,
0X55, 0XB6, 0XDF, 0X6B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE,
0XAE, 0XAA, 0XAA, 0XAA, 0X09, 0X05, 0X52, 0X85, 0X2A, 0XAA, 0XAB, 0X75, 0XBE, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFD, 0X55, 0X55, 0X55, 0X52, 0X28, 0X04,
0X29, 0X55, 0XD5, 0X56, 0XDF, 0X75, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XF7, 0X56, 0XAA, 0XAA, 0XAA, 0X04, 0X82, 0XAA, 0X85, 0X5B, 0X68, 0X2B, 0XF5, 0XDF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFB, 0X55, 0X55, 0X55, 0X50,
0X54, 0X15, 0X75, 0X6D, 0XA0, 0X0D, 0X7E, 0XF5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XAE, 0XAA, 0XAA, 0XAA, 0X05, 0X09, 0X55, 0XAA, 0X92, 0X02, 0X92, 0XEB,
0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X7D, 0X55, 0X55,
0X54, 0XA9, 0X52, 0XAB, 0X7A, 0XA0, 0X0D, 0X37, 0XDE, 0XF5, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XD6, 0XA5, 0X52, 0XAA, 0X00, 0X0A, 0X54, 0X80, 0X00, 0X7A,
0XD5, 0X75, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X7B,
0X52, 0XAA, 0XA9, 0X40, 0X00, 0X02, 0X40, 0X03, 0XAF, 0XFF, 0XBF, 0XD7, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XAE, 0XA9, 0X55, 0X55, 0X00, 0X00, 0X00, 0X00,
0XAA, 0XF6, 0XEA, 0XEA, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XF5, 0X7D, 0X52, 0XAA, 0XAA, 0XA5, 0X50, 0X00, 0X05, 0X2F, 0XDF, 0XBF, 0XDF, 0XD7, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD6, 0XA8, 0XAA, 0XAA, 0X48, 0X0A,
0X92, 0XAA, 0XDA, 0XBF, 0XEA, 0XB5, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XF5, 0X7B, 0X44, 0XAA, 0XAB, 0X6E, 0XA5, 0X48, 0X55, 0X6F, 0XD6, 0XFF, 0XDF, 0XEF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD6, 0XAA, 0X55, 0X54,
0X91, 0X49, 0X32, 0XAB, 0X55, 0X7F, 0XD5, 0X76, 0XB7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFA, 0XBD, 0X50, 0XD5, 0X55, 0XB6, 0X92, 0X65, 0X54, 0XAB, 0XD5, 0XBF,
0XED, 0XEF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XB7, 0XEA, 0XAA,
0XAA, 0XAA, 0X49, 0X6A, 0X94, 0X01, 0X55, 0X7F, 0X6A, 0XBB, 0X5F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0X7D, 0X40, 0XE5, 0X55, 0X6D, 0X29, 0X4A, 0XA8, 0XAA,
0XAB, 0XFF, 0XDF, 0XED, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XF7,
0XD6, 0XAA, 0X22, 0XAA, 0X92, 0XD6, 0XA0, 0X02, 0X15, 0XFE, 0XAD, 0X6A, 0XBF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDE, 0XBD, 0X50, 0XE1, 0XAA, 0XB6, 0XA9, 0X0A,
0XA8, 0XAB, 0X55, 0XFB, 0XDF, 0XEF, 0XFF, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFD, 0XB5, 0XEA, 0XAA, 0XA2, 0X55, 0X49, 0X56, 0XD0, 0X02, 0X55, 0XFF, 0X6F, 0X75, 0X7D, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFE, 0XB5, 0X50, 0XE1, 0X55, 0X6D,
0X52, 0X4A, 0XA9, 0X2E, 0XAB, 0XFB, 0XDF, 0XBF, 0XF9, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XEF, 0XDB, 0XDE, 0XAA, 0X32, 0XAA, 0X92, 0XAD, 0XB4, 0X02, 0XDB, 0XFE, 0XDF, 0X6A,
0XEF, 0XFE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XB6, 0XB5, 0X50, 0XE1,
0X2A, 0XB6, 0XA9, 0X29, 0X56, 0XB7, 0X7F, 0XF6, 0XFD, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFD, 0XED, 0X4A, 0X42, 0X55, 0X49, 0X56, 0XD4, 0X8B, 0XFF, 0XFB,
0X7D, 0XAB, 0XFF, 0XFF, 0XFF, 0XFB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X56, 0XB6,
0XA1, 0X6B, 0X15, 0X6D, 0X52, 0X6A, 0XFD, 0XFF, 0XFF, 0XDF, 0XFD, 0X6F, 0XFF, 0XFF, 0XFE, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XEF, 0XFB, 0XDD, 0X54, 0X51, 0X4A, 0X92, 0XAD, 0X9F, 0X57,
0X7F, 0XFF, 0XFD, 0X57, 0XBF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFA,
0XAE, 0XBA, 0XA9, 0X6A, 0X92, 0XB6, 0XAB, 0X7A, 0XFF, 0XFF, 0XFF, 0XFB, 0XED, 0X7F, 0XFF, 0XFF,
0XFF, 0XF7, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFB, 0XED, 0X52, 0X45, 0X45, 0X49, 0X55,
0XD7, 0XB7, 0XFF, 0XFF, 0XF6, 0XBB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFB, 0XAD, 0X76, 0XA9, 0X2A, 0XA1, 0X6E, 0XAA, 0XFA, 0XFF, 0XFF, 0XFF, 0XDB, 0XDE, 0XDF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XF7, 0XDD, 0X46, 0XD5, 0X14,
0X91, 0X57, 0XAF, 0XFF, 0XFF, 0XFF, 0XFE, 0XAB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XDB, 0XDE, 0XBA, 0X9D, 0X29, 0X68, 0X36, 0XAD, 0X7A, 0XDD, 0XFF, 0XFF, 0XF5,
0XBF, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XB5, 0XED, 0X75,
0X56, 0X82, 0XA9, 0X57, 0XD7, 0XBF, 0XFF, 0XFE, 0XAE, 0X6D, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XFE, 0XB5, 0XD5, 0X49, 0X51, 0X15, 0X6A, 0XFA, 0XEA, 0XBD,
0XD7, 0XF5, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XAB,
0XDD, 0XDA, 0XB2, 0XA4, 0X8A, 0X95, 0XAF, 0XBF, 0XEF, 0XFD, 0X5A, 0XEB, 0X7F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7E, 0XB3, 0X96, 0XA5, 0X49, 0X22, 0XAB, 0X5D,
0X75, 0X5D, 0XAA, 0XB5, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XEB, 0XD5, 0XEF, 0XB9, 0X5A, 0XA4, 0X85, 0X54, 0XAA, 0XDA, 0XF7, 0X7F, 0X6B, 0X7B, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFE, 0XBF, 0XAE, 0XA5, 0X52, 0X51,
0X56, 0XAF, 0X6D, 0X2B, 0XA9, 0X25, 0XAF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XAB, 0XFF, 0XD5, 0X5A, 0XAD, 0X08, 0XA9, 0X52, 0XDA, 0XD5, 0X76, 0XD6, 0XFB,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XED, 0XFF, 0XFF, 0XDA, 0XA5,
0X50, 0X52, 0X4B, 0X56, 0X95, 0X2A, 0XD4, 0XAD, 0XEF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X57, 0XFF, 0XED, 0X5A, 0XAD, 0X04, 0X14, 0XA9, 0X6A, 0XAA, 0XAB,
0X5B, 0X7B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XEE, 0XAA, 0XA2, 0XA2, 0X8A, 0X94, 0XAA, 0XAA, 0XA8, 0XAD, 0XBF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDD, 0XDF, 0XFF, 0XF3, 0X55, 0X5D, 0X08, 0X25, 0X4B, 0X55,
0X55, 0X55, 0X77, 0XEE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7,
0XBF, 0XFF, 0XFE, 0XB5, 0X52, 0X51, 0X40, 0X52, 0XAA, 0X95, 0X22, 0XAD, 0X5F, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F, 0XFF, 0XFB, 0X4A, 0XAD, 0XAA, 0X08,
0X2C, 0X55, 0X4A, 0X55, 0X7B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFB, 0XFF, 0XFF, 0XFD, 0XB5, 0X54, 0X45, 0X42, 0X82, 0XA0, 0XA1, 0X2A, 0XAE, 0XBB, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFD, 0XFF, 0XFF, 0XFE, 0XEA, 0XAB,
0X90, 0X28, 0X50, 0X15, 0X14, 0XD5, 0X7B, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XDF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XDF, 0XFF, 0XFF, 0XFF, 0X56, 0XAA, 0X25, 0X41, 0X05, 0X42, 0XA5, 0XAA, 0XD7,
0X77, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF7, 0XFF, 0XFF, 0XFF,
0XB9, 0X55, 0XD2, 0X14, 0X50, 0X15, 0X5A, 0X55, 0X7D, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XD6, 0XAA, 0X55, 0X42, 0X0A, 0XAA, 0XA5,
0X55, 0XAF, 0XBB, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF,
};
// include library, include base class, make path known
#include <FS.h>
#include <GxEPD.h>
#include <time.h>
#define min(a,b) ((a)<(b)?(a):(b))
//#include "IMG_0001.h"
// select the display class to use, only one
#include <GxGDEP015OC1/GxGDEP015OC1.cpp>
// uncomment next line for drawBitmap() test, (consumes RAM on ESP8266)
//#include GxEPD_BitmapExamples
// FreeFonts from Adafruit_GFX
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h>
#include <GxIO/GxIO_SPI/GxIO_SPI.cpp>
#include <GxIO/GxIO.cpp>
#if defined(ESP8266)
// generic/common.h
//static const uint8_t SS = 15;
//static const uint8_t MOSI = 13;
//static const uint8_t MISO = 12;
//static const uint8_t SCK = 14;
// pins_arduino.h
//static const uint8_t D8 = 15;
//static const uint8_t D7 = 13;
//static const uint8_t D6 = 12;
//static const uint8_t D5 = 14;
// GxIO_SPI(SPIClass& spi, int8_t cs, int8_t dc, int8_t rst = -1, int8_t bl = -1);
GxIO_Class io(SPI, SS, D3, D4); // arbitrary selection of D3, D4 selected for default of GxEPD_Class
// GxGDEP015OC1(GxIO& io, uint8_t rst = D4, uint8_t busy = D2);
GxEPD_Class display(io); // default selection of D4, D2
// my IoT connection, busy on MISO
//GxEPD_Class display(io, D4, D0);
#endif
const char* host = "davidjwatts.com";
String channelNameTW = "mrdavidjwatts";
bool haveBearerToken = false;
String channelNameIS = "davidjwatts";
const char* channelName = "mrdavidjwatts";
#define CHANNEL_ID "UCLhStqjQbgTyphK0dsXi0ZQ"
String countReturn;
boolean started = false;
boolean started2 = false;
boolean started3 = false;
boolean started4 = false;
String subsCount = "";
int instagram = 0;
String tempInsta = "";
String timeReturn;
int tempSubs = 0;
int tempFollowers = 0;
int followers = 0;
int firstInsta = 0;
int firstTwit = 0;
int firstYT = 0;
String firstTimeVal;
boolean firstTime = true;
boolean displayIncDec = false;
#include "InstagramStats.h"
#include <TwitterApi.h>
#include <YoutubeApi.h>
#define BEARER_TOKEN "Grrrr"
#define API_KEY "API KEY"
#include <ESP8266WiFi.h>
#include "JsonStreamingParser.h"
#include <WiFiClientSecure.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager
ESP8266WiFiMulti WiFiMulti;
WiFiClientSecure client;
YoutubeApi api(API_KEY, client);
InstagramStats instaStats(client);
TwitterApi api2(client);
HTTPClient http; //Declare an object of class HTTPClient
unsigned long api_mtbs = 600000; //mean time between api requests
unsigned long api_lasttime = 0; //last time api request has been done
unsigned long previousMillis = 0; // will store last time LED was updated
// constants won't change:
const long interval = 10000; // interval at which to blink (milliseconds)
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
delay(10);
display.init();
display.setRotation(0);
WiFiManager wifiManager;
wifiManager.setTimeout(180);
delay(100);
//WiFiMulti.addAP(ssidWifi, passwordWifi);
if(!wifiManager.autoConnect("Social_Counter")) {
Serial.println("failed to connect and hit timeout");
delay(3000);
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(5000);
}
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.println();
Serial.println();
Serial.print("Wait for WiFi... ");
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
api2.setBearerToken(BEARER_TOKEN);
haveBearerToken = true;
}
void loop()
{
countReturn = "";
timeReturn = "";
tempSubs = 0;
tempFollowers = 0;
http.begin("http://davidjwatts.com/youtube/subcount/time.php"); //Specify request destination
int httpCode = http.GET(); //Send the request
if (httpCode > 0) { //Check the returning code
timeReturn = http.getString(); //Get the request response payload
Serial.println(timeReturn); //Print the response payload
}
http.end(); //Close connection
getInstagramStatsForUser();
getTwitterStats(channelNameTW);
if(api.getChannelStatistics(CHANNEL_ID))
{
subsCount = api.channelStats.subscriberCount;
Serial.print("Subscriber Count: ");
Serial.println(subsCount);
//Serial.println(api.channelStats.subscriberCount);
//Serial.print("View Count: ");
//Serial.println(api.channelStats.viewCount);
// Serial.print("Comment Count: ");
//Serial.println(api.channelStats.commentCount);
//Serial.print("Video Count: ");
//Serial.println(api.channelStats.videoCount);
// Probably not needed :)
//Serial.print("hiddenSubscriberCount: ");
//Serial.println(api.channelStats.hiddenSubscriberCount);
//Serial.println("------------------------");
}
//digitalWrite(D8, LOW);
//showInterwebs();
showFace();
delay(1000);
//
if(displayIncDec == false){
showSubs();
displayIncDec = true;
}
else{
showIncDec();
displayIncDec = false;
}
//showSubs();
if(firstTime == true){
if(instagram > 0 && subsCount.toInt() > 0 && tempFollowers > 0){
firstInsta = instagram;
firstTwit = tempFollowers;
firstYT = subsCount.toInt();
firstTimeVal = timeReturn;
firstTime = false;
}
}
Serial.println(instagram - firstInsta);
Serial.println(subsCount.toInt() - firstYT);
Serial.println(tempFollowers - firstTwit);
//ESP.deepSleep(SLEEP_LENGTH * 60*1000*100);
delay(300000);
}
void showSubs() {
display.fillScreen(GxEPD_WHITE);
//display.update();
display.setTextColor(GxEPD_BLACK);
display.setFont(&FreeSans9pt7b);
display.drawBitmap(youtube, 5, 15, 32, 28, GxEPD_BLACK);
display.setCursor(41, 18);
//display.drawBitmap(youtube, 0, 0, 50, 50, GxEPD_BLACK);
//display.drawBitmap(youtube, 0, 0, 50, 50, GxEPD_BLACK); // new signature
//display.println("Youtube");
//display.setCursor(41, 100);
display.drawBitmap(insta, 5, 60, 32, 28, GxEPD_BLACK);
display.drawBitmap(twitter, 5, 110, 32, 28, GxEPD_BLACK);
//display.println("Twitter");
display.setFont(&FreeMonoBold24pt7b);
display.setCursor(40, 88);
//display.println();
display.println(instagram);
display.setCursor(40, 43);
//display.println();
display.println(subsCount);
display.setCursor(40, 138);
display.println(tempFollowers);
//display.fillRect(0, 75, 200, 3, GxEPD_BLACK);
display.fillRect(0, 160, 200, 3, GxEPD_BLACK);
display.setFont(&FreeSans9pt7b);
display.setCursor(5, 185);
display.println(timeReturn);
display.update();
}
void showIncDec() {
display.fillScreen(GxEPD_WHITE);
//display.update();
display.setTextColor(GxEPD_BLACK);
display.setFont(&FreeSans9pt7b);
display.drawBitmap(youtube, 5, 15, 32, 28, GxEPD_BLACK);
display.setCursor(41, 18);
//display.drawBitmap(youtube, 0, 0, 50, 50, GxEPD_BLACK);
//display.drawBitmap(youtube, 0, 0, 50, 50, GxEPD_BLACK); // new signature
//display.println("Youtube");
//display.setCursor(41, 100);
display.drawBitmap(insta, 5, 60, 32, 28, GxEPD_BLACK);
display.drawBitmap(twitter, 5, 110, 32, 28, GxEPD_BLACK);
//display.println("Twitter");
display.setFont(&FreeMonoBold24pt7b);
display.setCursor(40, 88);
//display.println();
display.println(instagram - firstInsta);
display.setCursor(40, 43);
//display.println();
display.println(subsCount.toInt() - firstYT);
display.setCursor(40, 138);
display.println(tempFollowers - firstTwit);
//display.fillRect(0, 75, 200, 3, GxEPD_BLACK);
display.fillRect(0, 160, 200, 3, GxEPD_BLACK);
display.setFont(&FreeSans9pt7b);
display.setCursor(5, 185);
display.println(firstTimeVal);
display.update();
}
void showFace() {
display.fillScreen(GxEPD_WHITE);
display.update();
display.drawBitmap(david, 0, 0, 200, 200, GxEPD_BLACK);
// display.drawBitmap(dmu, 0, 0, 200, 200, GxEPD_BLACK);
display.update();
}
void getInstagramStatsForUser() {
//Serial.println("Getting instagram user stats for " + channelNameIS );
InstagramUserStats response = instaStats.getUserStats(channelNameIS);
//Serial.println("Response:");
Serial.print("Instagram: ");
Serial.println(response.followedByCount);
instagram = response.followedByCount;
}
void getTwitterStats(String name) {
//Serial.println("Getting twitter stats for " + name);
String responseString = api2.getUserStatistics(name);
//Serial.println(responseString);
DynamicJsonBuffer jsonBuffer;
JsonObject& response = jsonBuffer.parseObject(responseString);
if (response.success()) {
//Serial.println("parsed Json");
tempFollowers = response["followers_count"];
Serial.print("Twitter: ");
Serial.println(tempFollowers);
// Use Arduino Json to parse the data
} else {
Serial.println("Failed to parse Json");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment