Browse Source

Added 2.36inch e-Paper (G) program and some fixes.

SSYYL 3 years ago
parent
commit
335392a396
41 changed files with 3817 additions and 592 deletions
  1. 267 0
      Arduino/epd2in36g/epd2in36g.cpp
  2. 74 0
      Arduino/epd2in36g/epd2in36g.h
  3. 60 0
      Arduino/epd2in36g/epd2in36g.ino
  4. 64 0
      Arduino/epd2in36g/epdif.cpp
  5. 51 0
      Arduino/epd2in36g/epdif.h
  6. 474 0
      Arduino/epd2in36g/imagedata.cpp
  7. 30 0
      Arduino/epd2in36g/imagedata.h
  8. 165 0
      RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c
  9. 2 0
      RaspberryPi_JetsonNano/c/examples/EPD_Test.h
  10. 1 0
      RaspberryPi_JetsonNano/c/examples/main.c
  11. 238 0
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c
  12. 51 0
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h
  13. 1 1
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c
  14. 1 1
      RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h
  15. BIN
      RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp
  16. BIN
      RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp
  17. 1 1
      RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py
  18. 73 0
      RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py
  19. 3 3
      RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py
  20. 3 3
      RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py
  21. 2 2
      RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py
  22. 240 0
      RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py
  23. BIN
      RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp
  24. BIN
      RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp
  25. 3 4
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian
  26. 100 75
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx
  27. 12 1
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx
  28. 167 23
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm
  29. 91 91
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm
  30. 405 377
      STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map
  31. 5 5
      STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst
  32. 1 0
      STM32/STM32-F103ZET6/Src/main.c
  33. 154 0
      STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c
  34. 1 1
      STM32/STM32-F103ZET6/User/Examples/EPD_4in37g_test.c
  35. 1 0
      STM32/STM32-F103ZET6/User/Examples/EPD_Test.h
  36. 2 1
      STM32/STM32-F103ZET6/User/Examples/ImageData.h
  37. 781 1
      STM32/STM32-F103ZET6/User/Examples/ImageData2.c
  38. 238 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c
  39. 51 0
      STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h
  40. 2 1
      Version_CN.txt
  41. 2 1
      Version_EN.txt

+ 267 - 0
Arduino/epd2in36g/epd2in36g.cpp

@@ -0,0 +1,267 @@
+/**
+ *  @filename   :   epd2in36g.cpp
+ *  @brief      :   Implements for e-paper library
+ *  @author     :   Waveshare
+ *
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <stdlib.h>
+#include "epd2in36g.h"
+
+Epd::~Epd() {
+};
+
+Epd::Epd() {
+    reset_pin = RST_PIN;
+    dc_pin = DC_PIN;
+    cs_pin = CS_PIN;
+    busy_pin = BUSY_PIN;
+    WIDTH = EPD_WIDTH;
+    HEIGHT = EPD_HEIGHT;
+};
+
+int Epd::Init() {
+    /* this calls the peripheral hardware interface, see epdif */
+    if (IfInit() != 0) {
+        return -1;
+    }
+    Reset();
+
+    SendCommand(0x66);
+    SendData(0x49);
+    SendData(0x55);
+    SendData(0x13);
+    SendData(0x5D);
+
+    SendCommand(0x66);
+    SendData(0x49);
+    SendData(0x55);
+
+    SendCommand(0xB0);
+    SendData(0x03);//1 boost 20211113
+
+    SendCommand(0x00);
+    SendData(0x4F);
+    SendData(0x69);
+
+    SendCommand(0x03);
+    SendData(0x00);
+
+    SendCommand(0xF0);
+    SendData(0xF6);
+    SendData(0x0D);
+    SendData(0x00);
+    SendData(0x00);
+    SendData(0x00);
+
+    SendCommand(0x06); //20211113
+    SendData(0xCF);
+    SendData(0xDE);
+    SendData(0x0F);
+
+    SendCommand(0x41);
+    SendData(0x00);
+
+    SendCommand(0x50);
+    SendData(0x30);
+
+    SendCommand(0x60);
+    SendData(0x0C); 
+    SendData(0x05);
+
+    SendCommand(0x61);
+    SendData(0xA8);
+    SendData(0x01); 
+    SendData(0x28); 
+
+    SendCommand(0x84);
+    SendData(0x01);
+    return 0;
+}
+
+/**
+ *  @brief: basic function for sending commands
+ */
+void Epd::SendCommand(unsigned char command) {
+    DigitalWrite(dc_pin, LOW);
+    SpiTransfer(command);
+}
+
+/**
+ *  @brief: basic function for sending data
+ */
+void Epd::SendData(unsigned char data) {
+    DigitalWrite(dc_pin, HIGH);
+    SpiTransfer(data);
+}
+
+/**
+ *  @brief: Wait until the busy_pin goes LOW
+ */
+void Epd::ReadBusyH(void) {
+    Serial.print("e-Paper busy H\r\n ");
+    while(DigitalRead(busy_pin) == LOW) {      //LOW: busy, HIGH: idle
+        DelayMs(5);
+    } 
+    Serial.print("e-Paper busy release H\r\n ");    
+}
+
+void Epd::ReadBusyL(void) {
+    Serial.print("e-Paper busy L\r\n ");
+    while(DigitalRead(busy_pin) == HIGH) {      //LOW: idle, HIGH: busy
+        DelayMs(5);
+    }      
+    Serial.print("e-Paper busy release L\r\n ");
+}
+
+/**
+ *  @brief: module reset.
+ *          often used to awaken the module in deep sleep,
+ *          see Epd::Sleep();
+ */
+void Epd::Reset(void) {
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(20);    
+    DigitalWrite(reset_pin, LOW);                //module reset    
+    DelayMs(2);
+    DigitalWrite(reset_pin, HIGH);
+    DelayMs(20);     
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+void Epd::TurnOnDisplay(void)
+{
+    SendCommand(0x12); // DISPLAY_REFRESH
+    SendData(0x00);
+    ReadBusyH();
+
+    SendCommand(0x02); // POWER_OFF
+    SendData(0X00);
+    ReadBusyH();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void Epd::Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+    
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            SendData((color<<6) | (color<<4) | (color<<2) | color);
+        }
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void Epd::Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+    
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            SendData(pgm_read_byte(&Image[i + j * Width]));
+        }
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+void Epd::Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height)
+{
+    UWORD Width, Height, i, j;
+    Width = (WIDTH % 4 == 0)? (WIDTH / 4 ): (WIDTH / 4 + 1);
+    Height = HEIGHT;
+    
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X01);
+
+    SendCommand(0x04);
+    ReadBusyH();
+
+    SendCommand(0x10);
+    for(i=0; i<Height; i++) {
+        for(j=0; j< Width; j++) {
+            if(i<image_height+ystart && i>=ystart && j<(image_width+xstart)/4 && j>=xstart/4) {
+              SendData(pgm_read_byte(&Image[(j-xstart/4) + (image_width/4*(i-ystart))]));
+            }
+			else {
+				SendData(0x55);
+			}
+		}
+    }
+
+    SendCommand(0x68); // POWER_OFF
+    SendData(0X00);
+
+    TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void Epd::Sleep(void)
+{
+    SendCommand(0x02); // POWER_OFF
+    SendData(0X00);
+    SendCommand(0x07); // DEEP_SLEEP
+    SendData(0XA5);
+}
+
+/* END OF FILE */
+
+

+ 74 - 0
Arduino/epd2in36g/epd2in36g.h

@@ -0,0 +1,74 @@
+/**
+ *  @filename   :   epd2in36g.h
+ *  @brief      :   Header file for e-paper display library epd4in37g.cpp
+ *  @author     :   Waveshare
+ *  
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef EPD2IN36G_H
+#define EPD2IN36G_H
+
+#include "epdif.h"
+
+// Display resolution
+#define EPD_WIDTH       168
+#define EPD_HEIGHT      296
+
+// Color
+#define  black   0x0
+#define  white   0x1
+#define  yellow  0x2
+#define  red     0x3
+
+#define UWORD   unsigned int
+#define UBYTE   unsigned char
+#define UDOUBLE unsigned long
+
+class Epd : EpdIf {
+public:
+    unsigned long WIDTH;
+    unsigned long HEIGHT;
+
+    Epd();
+    ~Epd();
+    int  Init();
+    void SendCommand(unsigned char command);
+    void SendData(unsigned char data);
+    void Reset(void);
+    void ReadBusyH(void);
+    void ReadBusyL(void);
+    void TurnOnDisplay(void);
+    void Clear(UBYTE color);
+    void Display(UBYTE *Image);
+    void Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height);
+    void Sleep(void);
+
+private:
+    unsigned int reset_pin;
+    unsigned int dc_pin;
+    unsigned int cs_pin;
+    unsigned int busy_pin;
+};
+
+#endif /* EPD4IN37_H */
+
+/* END OF FILE */

+ 60 - 0
Arduino/epd2in36g/epd2in36g.ino

@@ -0,0 +1,60 @@
+/**
+ *  @filename   :   epd2in36g-demo.ino
+ *  @brief      :   2.36inch e-Paper (G) display demo
+ *  @author     :   Waveshare
+ *
+ *  Copyright (C) Waveshare     2022/08/17
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <SPI.h>
+#include "epd2in36g.h"
+#include "imagedata.h"
+
+Epd epd;
+
+void setup() {
+  // put your setup code here, to run once:
+  Serial.begin(115200);
+  Serial.print("e-Paper init  \r\n");
+  if (epd.Init() != 0) {
+      Serial.print("e-Paper init failed");
+      return;
+  }
+
+  Serial.print("White \r\n");
+  epd.Clear(white);
+  delay(2000);
+
+  Serial.print("Small Image \r\n");
+  epd.Display_part(Image4color, 0, 64, 168, 168);
+  delay(2000);
+
+  Serial.print("Clear...\r\n");
+  epd.Clear(white);
+  delay(2000);
+
+  Serial.print("Goto Sleep...\r\n");
+  epd.Sleep();
+}
+
+void loop() {
+
+}

+ 64 - 0
Arduino/epd2in36g/epdif.cpp

@@ -0,0 +1,64 @@
+/**
+ *  @filename   :   epdif.cpp
+ *  @brief      :   Implements EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "epdif.h"
+#include <spi.h>
+
+EpdIf::EpdIf() {
+};
+
+EpdIf::~EpdIf() {
+};
+
+void EpdIf::DigitalWrite(int pin, int value) {
+    digitalWrite(pin, value);
+}
+
+int EpdIf::DigitalRead(int pin) {
+    return digitalRead(pin);
+}
+
+void EpdIf::DelayMs(unsigned int delaytime) {
+    delay(delaytime);
+}
+
+void EpdIf::SpiTransfer(unsigned char data) {
+    digitalWrite(CS_PIN, LOW);
+    SPI.transfer(data);
+    digitalWrite(CS_PIN, HIGH);
+}
+
+int EpdIf::IfInit(void) {
+    pinMode(CS_PIN, OUTPUT);
+    pinMode(RST_PIN, OUTPUT);
+    pinMode(DC_PIN, OUTPUT);
+    pinMode(BUSY_PIN, INPUT); 
+
+    SPI.begin();
+    SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0));
+    return 0;
+}

+ 51 - 0
Arduino/epd2in36g/epdif.h

@@ -0,0 +1,51 @@
+/**
+ *  @filename   :   epdif.h
+ *  @brief      :   Header file of epdif.cpp providing EPD interface functions
+ *                  Users have to implement all the functions in epdif.cpp
+ *  @author     :   Yehui from Waveshare
+ *
+ *  Copyright (C) Waveshare     August 10 2017
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef EPDIF_H
+#define EPDIF_H
+
+#include <arduino.h>
+
+// Pin definition
+#define RST_PIN         8
+#define DC_PIN          9
+#define CS_PIN          10
+#define BUSY_PIN        7
+
+class EpdIf {
+public:
+    EpdIf(void);
+    ~EpdIf(void);
+
+    static int  IfInit(void);
+    static void DigitalWrite(int pin, int value); 
+    static int  DigitalRead(int pin);
+    static void DelayMs(unsigned int delaytime);
+    static void SpiTransfer(unsigned char data);
+};
+
+#endif

+ 474 - 0
Arduino/epd2in36g/imagedata.cpp

@@ -0,0 +1,474 @@
+/**
+ *  @filename   :   imagedata.cpp
+ *  @brief      :   data file for epd demo
+ *
+ *  Copyright (C) Waveshare     2022/08/16
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "imagedata.h"
+#include <avr/pgmspace.h>
+
+// 4 Color Image Data 168*168 
+const unsigned char Image4color[7056] PROGMEM = {
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,
+0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,
+0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
+0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0x80,0x00,
+0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0xAA,0x80,0x0A,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,
+0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0x80,0x0A,0xAA,0xA0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x02,0x8A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,
+0x80,0x00,0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0x0A,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x2A,0x80,0x00,0x3A,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,
+0x2A,0xA0,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x00,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x15,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x57,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x2A,0x80,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x3F,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,
+0xF0,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x0A,0xAB,0x00,
+0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x15,0x55,
+0x00,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xA8,0x00,0x00,0x00,0x00,0x01,0x55,0x50,
+0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x2A,
+0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00,
+0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,
+0x00,0x00,0x00,0x2A,0x80,0x2A,0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,
+0xAA,0xA8,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF5,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,
+0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,
+0x55,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,
+0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,
+0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xF5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x04,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xC0,0x00,
+0x01,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03,
+0xFF,0xFD,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x40,0x00,0x00,0xFF,0xFF,0x55,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55,
+0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF,
+0xD5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x5F,0xFF,0xFC,
+0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x00,
+0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x15,0x55,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55,
+0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x55,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x05,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x54,0x00,
+0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,
+0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,
+0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,
+0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x5F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x35,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF5,
+0x55,0x55,0x5F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF5,0x55,0x55,0x5F,0xF0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,
+0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x3F,0xF5,0x55,0x55,0x5F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xD5,0x55,0x55,
+0x57,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x7F,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
+0xFF,0xD5,0x55,0x55,0x57,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xD5,0x55,0x55,0x57,0xFF,
+0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x00,0x00,0x00,0x03,
+0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0x55,0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,
+0x00,0x0A,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x55,
+0x55,0x55,0x55,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,
+0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xA0,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,
+0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,
+0x80,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,
+0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00,
+0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0x80,0xAA,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,
+0xC0,0x00,0x00,0x0A,0xA2,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
+0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x0A,0xAA,0xAA,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x80,0x00,0x00,0x03,
+0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x02,0xAA,0xAB,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xFF,0xF5,0x55,0x55,0x55,0x55,0x5B,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x02,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,
+0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF5,0x55,
+0x55,0x55,0x55,0x55,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,
+0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x02,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x7F,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,
+0x7F,0xFF,0xC0,0x00,0x00,0x00,0x0E,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x3F,0xFD,0x55,0x55,0x55,0x55,0x55,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x02,0x0A,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,
+0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,
+0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xC0,0x00,0x00,0x00,0xAA,0x80,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0xAA,0xA0,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,
+0xC0,0x00,0x00,0x00,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x2A,0xAA,0x80,0x00,0x00,0x03,0xFF,0xFD,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x80,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x0F,
+0xFF,0xFD,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x15,0x55,0x57,0xD5,0x57,0xF5,0x55,0x55,0x55,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x5F,
+0xFF,0xFF,0xFF,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,
+0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xF1,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x53,0xFF,0xFF,0xFF,
+0xFF,0xC0,0x15,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xF5,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x3F,0xFF,0xFF,0xFC,0x00,0x01,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x5F,0xFF,
+0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54,
+0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x15,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x01,0x55,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xD5,0x57,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x15,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x50,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xD5,0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xD5,
+0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0xFF,0xFF,0x55,0x55,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
+0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x54,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x55,0x55,0xFF,
+0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x40,0x01,0x54,0x00,
+0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,
+0x05,0x55,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x05,0x50,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFD,0x55,0x55,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x00,0x00,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+0x54,0x05,0x55,0x54,0x00,0x00,0x00,0x00,0x03,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xF0,
+0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x01,0x55,0x40,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x55,0x55,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x5F,0xFF,0xF0,0x00,0x00,0x00,0x15,0x55,0x55,
+0x40,0x00,0x05,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x45,0x55,0x55,0x50,0x00,0x00,0x00,0x0F,0xFF,0xF5,0x55,
+0x55,0x5F,0xFF,0xFC,0x00,0x00,0x01,0x55,0x55,0x54,0x00,0x00,0x15,0x50,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
+0x55,0x55,0x55,0x00,0x00,0x00,0x3F,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xFC,0x00,0x00,
+0x05,0x55,0x55,0x50,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x55,0x40,0x00,0x00,
+0x3F,0xFF,0xF5,0x55,0x55,0x57,0xFF,0xFF,0x00,0x00,0x15,0x55,0x55,0x00,0x00,0x01,
+0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x55,0x50,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x57,
+0xFF,0xFF,0x00,0x00,0x05,0x55,0x50,0x00,0x00,0x15,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,
+0x55,0x40,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x55,0xFF,0xFF,0x00,0x00,0x01,0x55,
+0x00,0x00,0x00,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0xFF,0xFF,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x01,0x54,0x00,0x00,0x01,0x54,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x55,0x00,0x00,0x03,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xC0,0x00,0x00,0x40,0x00,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
+0x00,0x03,0xFF,0xFD,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
+0xFF,0xF5,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x05,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,
+0x57,0xFF,0xFF,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,0x55,
+0x55,0x55,0x55,0x5F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,
+0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,
+0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x5F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x00,
+0x02,0xA8,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
+0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF0,0x00,0x00,
+0x00,0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x00,0x2A,0xA8,0x00,0x00,0x00,0x00,
+0x00,0x05,0x55,0x40,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,
+0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,
+0xFF,0xFC,0x00,0x00,0x00,0x00,0x15,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA0,
+0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x50,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFD,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,
+0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x55,0x54,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x15,0x54,0x00,0x00,0x00,0x00,
+0x00,0x02,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x50,0x00,0x00,0x00,0x0F,
+0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,
+0xFC,0x00,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xA8,0x00,0x00,
+0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x40,
+0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
+0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFD,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xF0,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x02,0xA8,0x2A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0x2A,
+0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xA8,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x02,0xAA,0xAA,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xAA,0xAA,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFC,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xAA,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x3F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,
+0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
+0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFD,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
+0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,
+0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+};
+
+

+ 30 - 0
Arduino/epd2in36g/imagedata.h

@@ -0,0 +1,30 @@
+/**
+ *  @filename   :   imagedata.h
+ *  @brief      :   head file for imagedata.cpp
+ *
+ *  Copyright (C) Waveshare     2022/08/16
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documnetation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to  whom the Software is
+ * furished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+extern const unsigned char Image4color[];
+
+/* FILE END */
+
+

+ 165 - 0
RaspberryPi_JetsonNano/c/examples/EPD_2in36g_test.c

@@ -0,0 +1,165 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g_test.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G) test demo
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_Test.h"
+#include "EPD_2in36g.h"
+#include "time.h"
+
+int EPD_2in36g_test(void)
+{
+    printf("EPD_2IN36G_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    printf("e-Paper Init and Clear...\r\n");
+    EPD_2IN36G_Init();
+
+	struct timespec start={0,0}, finish={0,0}; 
+    clock_gettime(CLOCK_REALTIME, &start);
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White
+    clock_gettime(CLOCK_REALTIME, &finish);
+    printf("%ld S\r\n", finish.tv_sec-start.tv_sec);	
+    DEV_Delay_ms(2000);
+
+    //Create a new image cache
+    UBYTE *BlackImage;
+    /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
+    UWORD Imagesize = ((EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        printf("Failed to apply for black memory...\r\n");
+        return -1;
+    }
+    printf("Paint_NewImage\r\n");
+    Paint_NewImage(BlackImage, EPD_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE);
+    Paint_SetScale(4);
+
+#if 1   // show bmp
+    printf("show window BMP-----------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp_RGB_4Color("./pic/2.36inch-1.bmp", 0, 0);
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(2000);
+
+    printf("show bmp------------------------\r\n");
+    Paint_SelectImage(BlackImage);
+    GUI_ReadBmp_RGB_4Color("./pic/2.36inch-2.bmp", 0, 0);
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(2000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE);
+    Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED);
+    Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+    Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    int hNumber, hWidth, vNumber, vWidth;
+    hNumber = 16;
+	hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23
+    vNumber = 16;
+	vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+	for(int i=0; i<hNumber; i++) {  // horizontal
+		Paint_DrawRectangle(1, 1+i*hWidth, EPD_2IN36G_WIDTH, hWidth*(1+i), EPD_2IN36G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+	}
+	for(int i=0; i<vNumber; i++) {  // vertical
+        if(i%2) {
+            Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_2IN36G_HEIGHT, EPD_2IN36G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+        }
+	}
+
+    printf("EPD_Display\r\n");  
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+    printf("Clear...\r\n");
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE);
+
+    printf("Goto Sleep...\r\n");
+    EPD_2IN36G_Sleep();
+    free(BlackImage);
+    BlackImage = NULL;
+    DEV_Delay_ms(2000);//important, at least 2s
+    // close 5V
+    printf("close 5V, Module enters 0 power consumption ...\r\n");
+    DEV_Module_Exit();
+    
+    return 0;
+}
+

+ 2 - 0
RaspberryPi_JetsonNano/c/examples/EPD_Test.h

@@ -38,7 +38,9 @@
 #include <stdlib.h> // malloc() free()
 #include <stdlib.h> // malloc() free()
 
 
 int EPD_1in64g_test(void);
 int EPD_1in64g_test(void);
+int EPD_2in36g_test(void);
 int EPD_3in0g_test(void);
 int EPD_3in0g_test(void);
+int EPD_4in37g_test(void);
 int EPD_7in3g_test(void);
 int EPD_7in3g_test(void);
 
 
 int EPD_1in54_DES_test(void);
 int EPD_1in54_DES_test(void);

+ 1 - 0
RaspberryPi_JetsonNano/c/examples/main.c

@@ -17,6 +17,7 @@ int main(void)
     signal(SIGINT, Handler);
     signal(SIGINT, Handler);
 	
 	
     // EPD_1in64g_test();
     // EPD_1in64g_test();
+    // EPD_2in36g_test();
     // EPD_3in0g_test();
     // EPD_3in0g_test();
     // EPD_4in37g_test();
     // EPD_4in37g_test();
     // EPD_7in3g_test();
     // EPD_7in3g_test();

+ 238 - 0
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.c

@@ -0,0 +1,238 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in36g.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN36G_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN36G_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_ReadBusyH(void)
+{
+    Debug("e-Paper busy H\r\n");
+    while(!DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy H release\r\n");
+}
+static void EPD_2IN36G_ReadBusyL(void)
+{
+    Debug("e-Paper busy L\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy L release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_TurnOnDisplay(void)
+{
+    EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH
+    EPD_2IN36G_SendData(0x01);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_ReadBusyH();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Init(void)
+{
+    EPD_2IN36G_Reset();
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+    EPD_2IN36G_SendData(0x13);
+    EPD_2IN36G_SendData(0x5D);
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+
+    EPD_2IN36G_SendCommand(0xB0);
+    EPD_2IN36G_SendData(0x03);//1 boost 20211113
+
+    EPD_2IN36G_SendCommand(0x00);
+    EPD_2IN36G_SendData(0x4F);
+    EPD_2IN36G_SendData(0x69);
+
+    EPD_2IN36G_SendCommand(0x03);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0xF0);
+    EPD_2IN36G_SendData(0xF6);
+    EPD_2IN36G_SendData(0x0D);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x06); //20211113
+    EPD_2IN36G_SendData(0xCF);
+    EPD_2IN36G_SendData(0xDE);
+    EPD_2IN36G_SendData(0x0F);
+
+    EPD_2IN36G_SendCommand(0x41);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x50);
+    EPD_2IN36G_SendData(0x30);
+
+    EPD_2IN36G_SendCommand(0x60);
+    EPD_2IN36G_SendData(0x0C); 
+    EPD_2IN36G_SendData(0x05);
+
+    EPD_2IN36G_SendCommand(0x61);
+    EPD_2IN36G_SendData(0xA8);
+    EPD_2IN36G_SendData(0x01); 
+    EPD_2IN36G_SendData(0x28); 
+
+    EPD_2IN36G_SendCommand(0x84);
+    EPD_2IN36G_SendData(0x01);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+                EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color);
+        }
+    }
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN36G_SendData(Image[i + j * Width]);
+        }
+    }
+	
+	EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+	
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Sleep(void)
+{
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN36G_SendData(0XA5);
+}
+

+ 51 - 0
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in36g.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.h
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN36G_H_
+#define __EPD_2IN36G_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN36G_WIDTH       168
+#define EPD_2IN36G_HEIGHT      296
+
+// Color
+#define EPD_2IN36G_BLACK		0x0
+#define EPD_2IN36G_WHITE		0x1
+#define EPD_2IN36G_YELLOW		0x2
+#define EPD_2IN36G_RED			0x3
+
+void EPD_2IN36G_Init(void);
+void EPD_2IN36G_Clear(UBYTE color);
+void EPD_2IN36G_Display(UBYTE *Image);
+void EPD_2IN36G_Sleep(void);
+
+#endif

+ 1 - 1
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.c

@@ -1,5 +1,5 @@
 /*****************************************************************************
 /*****************************************************************************
-* | File      	:   EPD_4in37g.h
+* | File      	:   EPD_4in37g.c
 * | Author      :   Waveshare team
 * | Author      :   Waveshare team
 * | Function    :   4.37inch e-Paper (G)
 * | Function    :   4.37inch e-Paper (G)
 * | Info        :
 * | Info        :

+ 1 - 1
RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in37g.h

@@ -1,5 +1,5 @@
 /*****************************************************************************
 /*****************************************************************************
-* | File      	:   EPD_4in37g.c
+* | File      	:   EPD_4in37g.h
 * | Author      :   Waveshare team
 * | Author      :   Waveshare team
 * | Function    :   4.37inch e-Paper (G)
 * | Function    :   4.37inch e-Paper (G)
 * | Info        :
 * | Info        :

BIN
RaspberryPi_JetsonNano/c/pic/2.36inch-1.bmp


BIN
RaspberryPi_JetsonNano/c/pic/2.36inch-2.bmp


+ 1 - 1
RaspberryPi_JetsonNano/python/examples/epd_1in64g_test.py

@@ -45,7 +45,7 @@ try:
     # time.sleep(3)
     # time.sleep(3)
     
     
     # # read bmp file 
     # # read bmp file 
-    # logging.info("3.read bmp file")
+    # logging.info("2.read bmp file")
     # Himage = Image.open(os.path.join(picdir, '1.64inch-1.bmp'))
     # Himage = Image.open(os.path.join(picdir, '1.64inch-1.bmp'))
     # epd.display(epd.getbuffer(Himage))
     # epd.display(epd.getbuffer(Himage))
     # time.sleep(3)
     # time.sleep(3)

+ 73 - 0
RaspberryPi_JetsonNano/python/examples/epd_2in36g_test.py

@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding:utf-8 -*-
+import sys
+import os
+picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic')
+libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib')
+if os.path.exists(libdir):
+    sys.path.append(libdir)
+
+import logging
+from waveshare_epd import epd2in36g
+import time
+from PIL import Image,ImageDraw,ImageFont
+import traceback
+
+logging.basicConfig(level=logging.DEBUG)
+
+try:
+    logging.info("epd2in36g Demo")
+
+    epd = epd2in36g.EPD()   
+    logging.info("init and Clear")
+    epd.init()
+    epd.Clear()
+    font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
+    font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
+    font40 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 40)
+
+    # Drawing on the image
+    logging.info("1.Drawing on the image...")
+    Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE)  
+    draw = ImageDraw.Draw(Himage)
+    draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
+    draw.text((5, 20), '2.36inch e-Paper', font = font18, fill = epd.YELLOW)
+    draw.text((5, 40), u'微雪电子', font = font40, fill = epd.BLACK)
+    draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW)
+    draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED)
+
+    draw.line((5, 175, 45, 245), fill = epd.RED)
+    draw.line((45, 175, 5, 245), fill = epd.YELLOW)
+    draw.rectangle((5, 175, 45, 245), outline = epd.BLACK)
+    draw.rectangle((55, 175, 95, 245), fill = epd.BLACK)
+    draw.arc((115, 175, 150, 210), 0, 360, fill = epd.BLACK)
+    draw.chord((115, 215, 150, 250), 0, 360, fill = epd.BLACK)
+    draw.chord((10, 252, 50, 295), 0, 360, fill = epd.YELLOW)
+    draw.chord((110, 252, 150, 295), 0, 360, fill = epd.RED)
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+    
+    # read bmp file 
+    logging.info("2.read bmp file")
+    Himage = Image.open(os.path.join(picdir, '2.36inch-1.bmp'))
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+
+    logging.info("3.read bmp file")
+    Himage = Image.open(os.path.join(picdir, '2.36inch-2.bmp'))
+    epd.display(epd.getbuffer(Himage))
+    time.sleep(3)
+    
+    logging.info("Clear...")
+    epd.Clear()
+    
+    logging.info("Goto Sleep...")
+    epd.sleep()
+        
+except IOError as e:
+    logging.info(e)
+    
+except KeyboardInterrupt:    
+    logging.info("ctrl + c:")
+    epd2in36g.epdconfig.module_exit()
+    exit()

+ 3 - 3
RaspberryPi_JetsonNano/python/examples/epd_3in0g_test.py

@@ -47,7 +47,7 @@ try:
 
 
     # Switch width and height for landscape display
     # Switch width and height for landscape display
     epd.init()
     epd.init()
-    logging.info("1.Drawing on the image...")
+    logging.info("2.Drawing on the image...")
     Himage = Image.new('RGB', (epd.height, epd.width), epd.WHITE)      
     Himage = Image.new('RGB', (epd.height, epd.width), epd.WHITE)      
     draw = ImageDraw.Draw(Himage)
     draw = ImageDraw.Draw(Himage)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
@@ -72,13 +72,13 @@ try:
     time.sleep(3)
     time.sleep(3)
 
 
     epd.init()
     epd.init()
-    logging.info("3.read bmp file")
+    logging.info("4.read bmp file")
     Himage = Image.open(os.path.join(picdir, '3inch-2.bmp'))
     Himage = Image.open(os.path.join(picdir, '3inch-2.bmp'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)
 
 
     epd.init()
     epd.init()
-    logging.info("3.read bmp file")
+    logging.info("5.read bmp file")
     Himage = Image.open(os.path.join(picdir, '3inch-3.bmp'))
     Himage = Image.open(os.path.join(picdir, '3inch-3.bmp'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)

+ 3 - 3
RaspberryPi_JetsonNano/python/examples/epd_4in37g_test.py

@@ -31,7 +31,7 @@ try:
     Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE)  # 255: clear the frame
     Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE)  # 255: clear the frame
     draw = ImageDraw.Draw(Himage)
     draw = ImageDraw.Draw(Himage)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
     draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
-    draw.text((5, 20), '7.3inch e-Paper', font = font24, fill = epd.YELLOW)
+    draw.text((5, 20), '4.37inch e-Paper', font = font24, fill = epd.YELLOW)
     draw.text((5, 45), u'微雪电子', font = font40, fill = epd.BLACK)
     draw.text((5, 45), u'微雪电子', font = font40, fill = epd.BLACK)
     draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW)
     draw.text((5, 85), u'微雪电子', font = font40, fill = epd.YELLOW)
     draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED)
     draw.text((5, 125), u'微雪电子', font = font40, fill = epd.RED)
@@ -46,7 +46,7 @@ try:
     time.sleep(3)
     time.sleep(3)
     
     
     # read bmp file 
     # read bmp file 
-    logging.info("3.read image file")
+    logging.info("2.read image file")
     Himage = Image.open(os.path.join(picdir, '4in37g0.jpg'))
     Himage = Image.open(os.path.join(picdir, '4in37g0.jpg'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)
@@ -56,7 +56,7 @@ try:
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)
     
     
-    logging.info("3.read image file")
+    logging.info("4.read image file")
     Himage = Image.open(os.path.join(picdir, '4in37g2.jpg'))
     Himage = Image.open(os.path.join(picdir, '4in37g2.jpg'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)

+ 2 - 2
RaspberryPi_JetsonNano/python/examples/epd_7in3g_test.py

@@ -46,7 +46,7 @@ try:
     time.sleep(3)
     time.sleep(3)
     
     
     # read bmp file 
     # read bmp file 
-    logging.info("3.read bmp file")
+    logging.info("2.read bmp file")
     Himage = Image.open(os.path.join(picdir, '7.3inch-1.bmp'))
     Himage = Image.open(os.path.join(picdir, '7.3inch-1.bmp'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)
@@ -56,7 +56,7 @@ try:
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)
 
 
-    logging.info("3.read bmp file")
+    logging.info("4.read bmp file")
     Himage = Image.open(os.path.join(picdir, '7.3inch-3.bmp'))
     Himage = Image.open(os.path.join(picdir, '7.3inch-3.bmp'))
     epd.display(epd.getbuffer(Himage))
     epd.display(epd.getbuffer(Himage))
     time.sleep(3)
     time.sleep(3)

+ 240 - 0
RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in36g.py

@@ -0,0 +1,240 @@
+# *****************************************************************************
+# * | File        :	  epd2in36g.py
+# * | Author      :   Waveshare team
+# * | Function    :   Electronic paper driver
+# * | Info        :
+# *----------------
+# * | This version:   V1.0
+# * | Date        :   2022-08-17
+# # | Info        :   python demo
+# -----------------------------------------------------------------------------
+# ******************************************************************************/
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+
+import logging
+from . import epdconfig
+
+import PIL
+from PIL import Image
+import io
+
+# Display resolution
+EPD_WIDTH       = 168
+EPD_HEIGHT      = 296
+
+logger = logging.getLogger(__name__)
+
+class EPD:
+    def __init__(self):
+        self.reset_pin = epdconfig.RST_PIN
+        self.dc_pin = epdconfig.DC_PIN
+        self.busy_pin = epdconfig.BUSY_PIN
+        self.cs_pin = epdconfig.CS_PIN
+        self.width = EPD_WIDTH
+        self.height = EPD_HEIGHT
+        self.BLACK  = 0x000000   #   00  BGR
+        self.WHITE  = 0xffffff   #   01
+        self.YELLOW = 0x00ffff   #   10
+        self.RED    = 0x0000ff   #   11
+        
+    # Hardware reset
+    def reset(self):
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200) 
+        epdconfig.digital_write(self.reset_pin, 0)         # module reset
+        epdconfig.delay_ms(2)
+        epdconfig.digital_write(self.reset_pin, 1)
+        epdconfig.delay_ms(200)   
+
+    def send_command(self, command):
+        epdconfig.digital_write(self.dc_pin, 0)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([command])
+        epdconfig.digital_write(self.cs_pin, 1)
+
+    def send_data(self, data):
+        epdconfig.digital_write(self.dc_pin, 1)
+        epdconfig.digital_write(self.cs_pin, 0)
+        epdconfig.spi_writebyte([data])
+        epdconfig.digital_write(self.cs_pin, 1)
+        
+    def ReadBusyH(self):
+        logger.debug("e-Paper busy H")
+        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
+            epdconfig.delay_ms(5)
+        logger.debug("e-Paper busy H release")
+
+    def ReadBusyL(self):
+        logger.debug("e-Paper busy L")
+        while(epdconfig.digital_read(self.busy_pin) == 1):      # 0: busy, 1: idle
+            epdconfig.delay_ms(5)
+        logger.debug("e-Paper busy L release")
+
+    def TurnOnDisplay(self):
+        self.send_command(0x12) # DISPLAY_REFRESH
+        self.send_data(0x01)
+        self.ReadBusyH()
+
+        self.send_command(0x02) # POWER_OFF
+        self.send_data(0X00)
+        self.ReadBusyH()
+        
+    def init(self):
+        if (epdconfig.module_init() != 0):
+            return -1
+        # EPD hardware init start
+
+        self.reset()
+
+        self.send_command(0x66)
+        self.send_data(0x49)
+        self.send_data(0x55)
+        self.send_data(0x13)
+        self.send_data(0x5D)
+
+        self.send_command(0x66)
+        self.send_data(0x49)
+        self.send_data(0x55)
+
+        self.send_command(0xB0)
+        self.send_data(0x03)
+
+        self.send_command(0x00)
+        self.send_data(0x4F)
+        self.send_data(0x69)
+
+        self.send_command(0x03)
+        self.send_data(0x00)
+
+        self.send_command(0xF0)
+        self.send_data(0xF6)
+        self.send_data(0x0D)
+        self.send_data(0x00)
+        self.send_data(0x00)
+        self.send_data(0x00)
+
+        self.send_command(0x06)
+        self.send_data(0xCF)
+        self.send_data(0xDE)
+        self.send_data(0x0F)
+
+        self.send_command(0x41)
+        self.send_data(0x00)
+
+        self.send_command(0x50)
+        self.send_data(0x30)
+
+        self.send_command(0x60)
+        self.send_data(0x0C) 
+        self.send_data(0x05)
+
+        self.send_command(0x61)
+        self.send_data(0xA8)
+        self.send_data(0x01) 
+        self.send_data(0x28) 
+
+        self.send_command(0x84)
+        self.send_data(0x01)
+        return 0
+
+    def getbuffer(self, image):
+        # Create a pallette with the 4 colors supported by the panel
+        pal_image = Image.new("P", (1,1))
+        pal_image.putpalette( (0,0,0,  255,255,255,  255,255,0,   255,0,0) + (0,0,0)*252)
+
+        # Check if we need to rotate the image
+        imwidth, imheight = image.size
+        if(imwidth == self.width and imheight == self.height):
+            image_temp = image
+        elif(imwidth == self.height and imheight == self.width):
+            image_temp = image.rotate(90, expand=True)
+        else:
+            logger.warning("Invalid image dimensions: %d x %d, expected %d x %d" % (imwidth, imheight, self.width, self.height))
+
+        # Convert the soruce image to the 4 colors, dithering if needed
+        image_4color = image_temp.convert("RGB").quantize(palette=pal_image)
+        buf_4color = bytearray(image_4color.tobytes('raw'))
+
+        # into a single byte to transfer to the panel
+        buf = [0x00] * int(self.width * self.height / 4)
+        idx = 0
+        for i in range(0, len(buf_4color), 4):
+            buf[idx] = (buf_4color[i] << 6) + (buf_4color[i+1] << 4) + (buf_4color[i+2] << 2) + buf_4color[i+3]
+            idx += 1
+
+        return buf
+
+    def display(self, image):
+        if self.width % 4 == 0 :
+            Width = self.width // 4
+        else :
+            Width = self.width // 4 + 1
+        Height = self.height
+
+        self.send_command(0x68)
+        self.send_data(0x01)
+
+        self.send_command(0x04)
+        self.ReadBusyH()
+
+        self.send_command(0x10)
+        for j in range(0, Height):
+            for i in range(0, Width):
+                    self.send_data(image[i + j * Width])
+
+        self.send_command(0x68)
+        self.send_data(0x00)
+
+        self.TurnOnDisplay()
+        
+    def Clear(self, color=0x55):
+        if self.width % 4 == 0 :
+            Width = self.width // 4
+        else :
+            Width = self.width // 4 + 1
+        Height = self.height
+
+        self.send_command(0x68)
+        self.send_data(0x01)
+
+        self.send_command(0x04)
+        self.ReadBusyH()
+
+        self.send_command(0x10)
+        for j in range(0, Height):
+            for i in range(0, Width):
+                self.send_data(color)
+
+        self.send_command(0x68)
+        self.send_data(0x00)
+
+        self.TurnOnDisplay()
+
+    def sleep(self):
+        self.send_command(0x02) # POWER_OFF
+        self.send_data(0x00)
+
+        self.send_command(0x07) # DEEP_SLEEP
+        self.send_data(0XA5)
+        
+        epdconfig.delay_ms(2000)
+        epdconfig.module_exit()
+### END OF FILE ###
+

BIN
RaspberryPi_JetsonNano/python/pic/2.36inch-1.bmp


BIN
RaspberryPi_JetsonNano/python/pic/2.36inch-2.bmp


File diff suppressed because it is too large
+ 3 - 4
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian


+ 100 - 75
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx

@@ -145,7 +145,7 @@
         <SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Number>0</Number>
           <Key>ST-LINKIII-KEIL_SWO</Key>
           <Key>ST-LINKIII-KEIL_SWO</Key>
-          <Name>-U50FF6E066675545724371487 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)</Name>
+          <Name>-U49FF6F066572485414310687 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)</Name>
         </SetRegEntry>
         </SetRegEntry>
       </TargetDriverDllRegistry>
       </TargetDriverDllRegistry>
       <Breakpoint>
       <Breakpoint>
@@ -234,6 +234,7 @@
       <pMultCmdsp></pMultCmdsp>
       <pMultCmdsp></pMultCmdsp>
       <DebugDescription>
       <DebugDescription>
         <Enable>1</Enable>
         <Enable>1</Enable>
+        <EnableFlashSeq>0</EnableFlashSeq>
         <EnableLog>0</EnableLog>
         <EnableLog>0</EnableLog>
         <Protocol>2</Protocol>
         <Protocol>2</Protocol>
         <DbgClock>10000000</DbgClock>
         <DbgClock>10000000</DbgClock>
@@ -263,7 +264,7 @@
 
 
   <Group>
   <Group>
     <GroupName>Application/User</GroupName>
     <GroupName>Application/User</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
@@ -343,7 +344,7 @@
 
 
   <Group>
   <Group>
     <GroupName>Examples</GroupName>
     <GroupName>Examples</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
@@ -899,17 +900,29 @@
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>54</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\Examples\EPD_2in36g_test.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in36g_test.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
   </Group>
 
 
   <Group>
   <Group>
     <GroupName>e-Paper</GroupName>
     <GroupName>e-Paper</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -921,7 +934,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -933,7 +946,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -945,7 +958,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -957,7 +970,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -969,7 +982,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -981,7 +994,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -993,7 +1006,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>61</FileNumber>
+      <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1005,7 +1018,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1017,7 +1030,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1029,7 +1042,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1041,7 +1054,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1053,7 +1066,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1065,7 +1078,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1077,7 +1090,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1089,7 +1102,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1101,7 +1114,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1113,7 +1126,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>71</FileNumber>
+      <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1125,7 +1138,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>72</FileNumber>
+      <FileNumber>73</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1137,7 +1150,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>73</FileNumber>
+      <FileNumber>74</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1149,7 +1162,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>74</FileNumber>
+      <FileNumber>75</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1161,7 +1174,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>75</FileNumber>
+      <FileNumber>76</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1173,7 +1186,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>76</FileNumber>
+      <FileNumber>77</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1185,7 +1198,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>77</FileNumber>
+      <FileNumber>78</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1197,7 +1210,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>78</FileNumber>
+      <FileNumber>79</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1209,7 +1222,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>79</FileNumber>
+      <FileNumber>80</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1221,7 +1234,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>80</FileNumber>
+      <FileNumber>81</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1233,7 +1246,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>81</FileNumber>
+      <FileNumber>82</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1245,7 +1258,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>82</FileNumber>
+      <FileNumber>83</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1257,7 +1270,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>83</FileNumber>
+      <FileNumber>84</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1269,7 +1282,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>84</FileNumber>
+      <FileNumber>85</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1281,7 +1294,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>85</FileNumber>
+      <FileNumber>86</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1293,7 +1306,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>86</FileNumber>
+      <FileNumber>87</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1305,7 +1318,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>87</FileNumber>
+      <FileNumber>88</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1317,7 +1330,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>88</FileNumber>
+      <FileNumber>89</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1329,7 +1342,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>89</FileNumber>
+      <FileNumber>90</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1341,7 +1354,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>90</FileNumber>
+      <FileNumber>91</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1353,7 +1366,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>91</FileNumber>
+      <FileNumber>92</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1365,7 +1378,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>92</FileNumber>
+      <FileNumber>93</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1377,7 +1390,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>93</FileNumber>
+      <FileNumber>94</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1389,7 +1402,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>94</FileNumber>
+      <FileNumber>95</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1401,7 +1414,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>95</FileNumber>
+      <FileNumber>96</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1413,7 +1426,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>96</FileNumber>
+      <FileNumber>97</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1425,7 +1438,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>4</GroupNumber>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>97</FileNumber>
+      <FileNumber>98</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1435,6 +1448,18 @@
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>99</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\User\e-Paper\EPD_2in36g.c</PathWithFileName>
+      <FilenameWithoutPath>EPD_2in36g.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
   </Group>
 
 
   <Group>
   <Group>
@@ -1445,7 +1470,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>5</GroupNumber>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>98</FileNumber>
+      <FileNumber>100</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1465,7 +1490,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>99</FileNumber>
+      <FileNumber>101</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1485,7 +1510,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>100</FileNumber>
+      <FileNumber>102</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1497,7 +1522,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>101</FileNumber>
+      <FileNumber>103</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1509,7 +1534,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>102</FileNumber>
+      <FileNumber>104</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1521,7 +1546,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>103</FileNumber>
+      <FileNumber>105</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1533,7 +1558,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>104</FileNumber>
+      <FileNumber>106</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1545,7 +1570,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>105</FileNumber>
+      <FileNumber>107</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1557,7 +1582,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>106</FileNumber>
+      <FileNumber>108</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1577,7 +1602,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>107</FileNumber>
+      <FileNumber>109</FileNumber>
       <FileType>5</FileType>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1589,7 +1614,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>108</FileNumber>
+      <FileNumber>110</FileNumber>
       <FileType>5</FileType>
       <FileType>5</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1609,7 +1634,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>9</GroupNumber>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>109</FileNumber>
+      <FileNumber>111</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1629,7 +1654,7 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>110</FileNumber>
+      <FileNumber>112</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1641,7 +1666,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>111</FileNumber>
+      <FileNumber>113</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1653,7 +1678,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>112</FileNumber>
+      <FileNumber>114</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1665,7 +1690,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>113</FileNumber>
+      <FileNumber>115</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1677,7 +1702,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>114</FileNumber>
+      <FileNumber>116</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1689,7 +1714,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>115</FileNumber>
+      <FileNumber>117</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1701,7 +1726,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>116</FileNumber>
+      <FileNumber>118</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1713,7 +1738,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>117</FileNumber>
+      <FileNumber>119</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1725,7 +1750,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>118</FileNumber>
+      <FileNumber>120</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1737,7 +1762,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>119</FileNumber>
+      <FileNumber>121</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1749,7 +1774,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>120</FileNumber>
+      <FileNumber>122</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1761,7 +1786,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>121</FileNumber>
+      <FileNumber>123</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1773,7 +1798,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>122</FileNumber>
+      <FileNumber>124</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1785,7 +1810,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>123</FileNumber>
+      <FileNumber>125</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1797,7 +1822,7 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>10</GroupNumber>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>124</FileNumber>
+      <FileNumber>126</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 12 - 1
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx

@@ -16,7 +16,7 @@
         <TargetCommonOption>
         <TargetCommonOption>
           <Device>STM32F103ZE</Device>
           <Device>STM32F103ZE</Device>
           <Vendor>STMicroelectronics</Vendor>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
+          <PackID>Keil.STM32F1xx_DFP.2.1.0</PackID>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")</Cpu>
           <Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <FlashUtilSpec></FlashUtilSpec>
@@ -184,6 +184,7 @@
             <hadXRAM>0</hadXRAM>
             <hadXRAM>0</hadXRAM>
             <uocXRam>0</uocXRam>
             <uocXRam>0</uocXRam>
             <RvdsVP>0</RvdsVP>
             <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
             <hadIRAM2>0</hadIRAM2>
             <hadIRAM2>0</hadIRAM2>
             <hadIROM2>0</hadIROM2>
             <hadIROM2>0</hadIROM2>
             <StupSel>8</StupSel>
             <StupSel>8</StupSel>
@@ -656,6 +657,11 @@
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\User\Examples\EPD_7in3g_test.c</FilePath>
               <FilePath>..\User\Examples\EPD_7in3g_test.c</FilePath>
             </File>
             </File>
+            <File>
+              <FileName>EPD_2in36g_test.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\Examples\EPD_2in36g_test.c</FilePath>
+            </File>
           </Files>
           </Files>
         </Group>
         </Group>
         <Group>
         <Group>
@@ -881,6 +887,11 @@
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\User\e-Paper\EPD_7in3g.c</FilePath>
               <FilePath>..\User\e-Paper\EPD_7in3g.c</FilePath>
             </File>
             </File>
+            <File>
+              <FileName>EPD_2in36g.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\User\e-Paper\EPD_2in36g.c</FilePath>
+            </File>
           </Files>
           </Files>
         </Group>
         </Group>
         <Group>
         <Group>

+ 167 - 23
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm

@@ -3,58 +3,202 @@
 <pre>
 <pre>
 <h1>µVision Build Log</h1>
 <h1>µVision Build Log</h1>
 <h2>Tool Versions:</h2>
 <h2>Tool Versions:</h2>
-IDE-Version: ¦ÌVision V5.25.2.0
+IDE-Version: ¦ÌVision V5.26.2.0
 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
-License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4
+License Information:  ,  , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8
  
  
 Tool Versions:
 Tool Versions:
-Toolchain:       MDK-ARM Plus  Version: 5.25.2.0
-Toolchain Path:  D:\Program Files\keil5\ARM\ARMCC\Bin
+Toolchain:       MDK-ARM Plus  Version: 5.26.2.0
+Toolchain Path:  D:\KEIL\azwz\ARM\ARMCC\Bin
 C Compiler:      Armcc.exe V5.06 update 6 (build 750)
 C Compiler:      Armcc.exe V5.06 update 6 (build 750)
 Assembler:       Armasm.exe V5.06 update 6 (build 750)
 Assembler:       Armasm.exe V5.06 update 6 (build 750)
 Linker/Locator:  ArmLink.exe V5.06 update 6 (build 750)
 Linker/Locator:  ArmLink.exe V5.06 update 6 (build 750)
 Library Manager: ArmAr.exe V5.06 update 6 (build 750)
 Library Manager: ArmAr.exe V5.06 update 6 (build 750)
 Hex Converter:   FromElf.exe V5.06 update 6 (build 750)
 Hex Converter:   FromElf.exe V5.06 update 6 (build 750)
-CPU DLL:         SARMCM3.DLL V5.25.2.0
-Dialog DLL:      DCM.DLL V1.17.1.0
-Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
-Dialog DLL:      TCM.DLL V1.35.1.0
+CPU DLL:         SARMCM3.DLL V5.26.2.0
+Dialog DLL:      DCM.DLL V1.17.2.0
+Target DLL:      STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0
+Dialog DLL:      TCM.DLL V1.36.1.0
  
  
 <h2>Project:</h2>
 <h2>Project:</h2>
-E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
-Project File Date:  08/16/2022
+E:\ÏîÄ¿\e-Paper\Code\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
+Project File Date:  08/17/2022
 
 
 <h2>Output:</h2>
 <h2>Output:</h2>
-*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
+*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin'
 Build target 'epd-demo'
 Build target 'epd-demo'
+assembling startup_stm32f103xe.s...
+compiling gpio.c...
+compiling usart.c...
+compiling spi.c...
+compiling main.c...
+compiling stm32f1xx_it.c...
+compiling ImageData2.c...
+..\User\Examples\ImageData2.c(11767): warning:  #1-D: last line of file ends without a newline
+  };
+..\User\Examples\ImageData2.c: 1 warning, 0 errors
+compiling ImageData.c...
+compiling stm32f1xx_hal_msp.c...
+compiling EPD_1in54_V2_test.c...
+compiling EPD_1in02_test.c...
+compiling EPD_1in54_test.c...
+compiling EPD_1in54b_test.c...
+compiling EPD_2in7b_V2_test.c...
+compiling EPD_1in54b_V2_test.c...
+compiling EPD_2in7b_test.c...
+compiling EPD_1in54c_test.c...
+compiling EPD_2in7_test.c...
+compiling EPD_2in9d_test.c...
+compiling EPD_2in9bc_test.c...
+compiling EPD_2in9b_V3_test.c...
+compiling EPD_2in9_V2_test.c...
+compiling EPD_2in9_test.c...
+compiling EPD_2in13_test.c...
+compiling EPD_2in13_V3_test.c...
+compiling EPD_2in13_V2_test.c...
+compiling EPD_2in13b_V3_test.c...
+compiling EPD_2in13b_V4_test.c...
+compiling EPD_3in52_test.c...
+compiling EPD_2in13d_test.c...
+compiling EPD_2in13bc_test.c...
+compiling EPD_2in66_test.c...
+compiling EPD_2in66b_test.c...
+compiling EPD_3in7_test.c...
+compiling EPD_4in2bc_test.c...
+compiling EPD_4in2b_V2_test.c...
+compiling EPD_4in2_test.c...
+compiling EPD_4in01f_test.c...
+compiling EPD_5in83_V2_test.c...
+compiling EPD_5in83_test.c...
+compiling EPD_5in65f_test.c...
+compiling EPD_5in83b_V2_test.c...
+compiling EPD_5in83bc_test.c...
+compiling EPD_7in5b_V2_test.c...
+compiling EPD_7in5_V2_test.c...
+compiling EPD_7in5bc_test.c...
+compiling EPD_7in5_test.c...
+compiling EPD_7in5b_HD_test.c...
+compiling EPD_7in5_HD_test.c...
+compiling EPD_7in3g_test.c...
+compiling EPD_3in0g_test.c...
+compiling EPD_1in64g_test.c...
 compiling EPD_4in37g_test.c...
 compiling EPD_4in37g_test.c...
+compiling EPD_1in02d.c...
+compiling EPD_1in54b.c...
+compiling EPD_1in54.c...
+compiling EPD_1in54_V2.c...
+compiling EPD_2in36g_test.c...
+compiling EPD_2in7.c...
+compiling EPD_2in7b_V2.c...
+compiling EPD_2in7b.c...
+compiling EPD_1in54b_V2.c...
+compiling EPD_1in54c.c...
+compiling EPD_2in9.c...
+compiling EPD_2in9d.c...
+compiling EPD_2in9bc.c...
+compiling EPD_2in9_V2.c...
+compiling EPD_2in9b_V3.c...
+compiling EPD_2in13_V2.c...
+compiling EPD_2in13.c...
+compiling EPD_2in13bc.c...
+compiling EPD_2in13b_V3.c...
+compiling EPD_2in13_V3.c...
+compiling EPD_2in13b_V4.c...
+compiling EPD_2in13d.c...
+compiling EPD_2in66b.c...
+compiling EPD_2in66.c...
+compiling EPD_3in52.c...
+compiling EPD_3in7.c...
+compiling EPD_4in2.c...
+..\User\e-Paper\EPD_4in2.c(612): warning:  #550-D: variable "Height"  was set but never used
+  	UWORD Width, Height;
+..\User\e-Paper\EPD_4in2.c: 1 warning, 0 errors
+compiling EPD_4in2bc.c...
+compiling EPD_4in2b_V2.c...
+compiling EPD_4in01f.c...
+compiling EPD_5in83bc.c...
+compiling EPD_5in83b_V2.c...
+compiling EPD_5in65f.c...
+compiling EPD_5in83_V2.c...
+compiling EPD_5in83.c...
+compiling EPD_7in5_V2.c...
+compiling EPD_7in5bc.c...
+compiling EPD_7in5b_V2.c...
+compiling EPD_7in5_HD.c...
+compiling EPD_7in5.c...
+compiling EPD_1in64g.c...
+..\User\e-Paper\EPD_1in64g.c(86): warning:  #177-D: function "EPD_1IN64G_ReadBusyL"  was declared but never referenced
+  static void EPD_1IN64G_ReadBusyL(void)
+..\User\e-Paper\EPD_1in64g.c: 1 warning, 0 errors
+compiling EPD_7in5b_HD.c...
+compiling EPD_3in0g.c...
+..\User\e-Paper\EPD_3in0g.c(86): warning:  #177-D: function "EPD_3IN0G_ReadBusyL"  was declared but never referenced
+  static void EPD_3IN0G_ReadBusyL(void)
+..\User\e-Paper\EPD_3in0g.c: 1 warning, 0 errors
+compiling EPD_7in3g.c...
+..\User\e-Paper\EPD_7in3g.c(86): warning:  #177-D: function "EPD_7IN3G_ReadBusyL"  was declared but never referenced
+  static void EPD_7IN3G_ReadBusyL(void)
+..\User\e-Paper\EPD_7in3g.c: 1 warning, 0 errors
+compiling EPD_4in37g.c...
+..\User\e-Paper\EPD_4in37g.c(86): warning:  #177-D: function "EPD_4IN37G_ReadBusyL"  was declared but never referenced
+  static void EPD_4IN37G_ReadBusyL(void)
+..\User\e-Paper\EPD_4in37g.c: 1 warning, 0 errors
+compiling font8.c...
+compiling font12.c...
+compiling font12CN.c...
+compiling font16.c...
+compiling font20.c...
+compiling font24.c...
+compiling font24CN.c...
+compiling DEV_Config.c...
+compiling stm32f1xx_hal_gpio_ex.c...
+compiling EPD_2in36g.c...
+..\User\e-Paper\EPD_2in36g.c(86): warning:  #177-D: function "EPD_2IN36G_ReadBusyL"  was declared but never referenced
+  static void EPD_2IN36G_ReadBusyL(void)
+..\User\e-Paper\EPD_2in36g.c: 1 warning, 0 errors
+compiling system_stm32f1xx.c...
+compiling GUI_Paint.c...
+compiling stm32f1xx_hal.c...
+compiling stm32f1xx_hal_gpio.c...
+compiling stm32f1xx_hal_rcc_ex.c...
+compiling stm32f1xx_hal_rcc.c...
+compiling stm32f1xx_hal_spi.c...
+compiling stm32f1xx_hal_flash.c...
+compiling stm32f1xx_hal_cortex.c...
+compiling stm32f1xx_hal_flash_ex.c...
+compiling stm32f1xx_hal_pwr.c...
+compiling stm32f1xx_hal_dma.c...
+compiling stm32f1xx_hal_tim.c...
+compiling stm32f1xx_hal_exti.c...
+compiling stm32f1xx_hal_tim_ex.c...
+compiling stm32f1xx_hal_uart.c...
 linking...
 linking...
-Program Size: Code=24416 RO-data=57124 RW-data=56 ZI-data=53424  
+Program Size: Code=24680 RO-data=21692 RW-data=56 ZI-data=53424  
 FromELF: creating hex file...
 FromELF: creating hex file...
-"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
+"epd-demo\epd-demo.axf" - 0 Error(s), 7 Warning(s).
 
 
 <h2>Software Packages used:</h2>
 <h2>Software Packages used:</h2>
 
 
 Package Vendor: ARM
 Package Vendor: ARM
-                http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
-                ARM.CMSIS.5.7.0
-                CMSIS (Cortex Microcontroller Software Interface Standard)
-   * Component: CORE Version: 5.4.0
+                http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack
+                ARM.CMSIS.5.9.0
+                CMSIS (Common Microcontroller Software Interface Standard)
+   * Component: CORE Version: 5.6.0
 
 
 Package Vendor: Keil
 Package Vendor: Keil
-                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
-                Keil.STM32F1xx_DFP.2.3.0
+                http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack
+                Keil.STM32F1xx_DFP.2.1.0
                 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
                 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
 
 
 <h2>Collection of Component include folders:</h2>
 <h2>Collection of Component include folders:</h2>
   .\RTE\_epd-demo
   .\RTE\_epd-demo
-  D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include
-  D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
+  D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include
+  D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include
 
 
 <h2>Collection of Component Files used:</h2>
 <h2>Collection of Component Files used:</h2>
 
 
-   * Component: ARM::CMSIS:CORE:5.4.0
-Build Time Elapsed:  00:00:02
+   * Component: ARM::CMSIS:CORE:5.6.0
+Build Time Elapsed:  00:00:56
 </pre>
 </pre>
 </body>
 </body>
 </html>
 </html>

+ 91 - 91
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm

@@ -3,11 +3,11 @@
 <title>Static Call Graph - [epd-demo\epd-demo.axf]</title></head>
 <title>Static Call Graph - [epd-demo\epd-demo.axf]</title></head>
 <body><HR>
 <body><HR>
 <H1>Static Call Graph for image epd-demo\epd-demo.axf</H1><HR>
 <H1>Static Call Graph for image epd-demo\epd-demo.axf</H1><HR>
-<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Aug 16 16:55:17 2022
+<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Wed Aug 17 17:17:30 2022
 <BR><P>
 <BR><P>
 <H3>Maximum Stack Usage =        760 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
 <H3>Maximum Stack Usage =        760 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
 Call chain for Maximum Stack Depth:</H3>
 Call chain for Maximum Stack Depth:</H3>
-main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+main &rArr; EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 <P>
 <P>
 <H3>
 <H3>
 Mutually Recursive functions
 Mutually Recursive functions
@@ -365,14 +365,14 @@ Global Symbols
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[46]"></a>main</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text))
 <P><STRONG><a name="[46]"></a>main</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = main &rArr; EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
 <BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
 <LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
 <LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
 <LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 <LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
 <LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
 </UL>
 </UL>
 <BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
 <BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
@@ -493,11 +493,11 @@ Global Symbols
 <BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 <BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[74]"></a>EPD_4in37g_test</STRONG> (Thumb, 688 bytes, Stack size 56 bytes, epd_4in37g_test.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
+<P><STRONG><a name="[74]"></a>EPD_2in36g_test</STRONG> (Thumb, 966 bytes, Stack size 56 bytes, epd_2in36g_test.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = EPD_2in36g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetScale
 <BR>[Calls]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetScale
-<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap
+<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap
 <LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SelectImage
 <LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SelectImage
 <LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_NewImage
 <LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_NewImage
 <LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
 <LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
@@ -507,14 +507,14 @@ Global Symbols
 <LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
 <LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
-<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_Clear
+<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_Clear
 <LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
+<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
 <LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
 <LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
 <LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
 <LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
@@ -522,46 +522,46 @@ Global Symbols
 <BR>[Called By]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
 <BR>[Called By]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[82]"></a>EPD_4IN37G_Init</STRONG> (Thumb, 344 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Init &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[82]"></a>EPD_2IN36G_Init</STRONG> (Thumb, 284 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_Init &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[83]"></a>EPD_4IN37G_Clear</STRONG> (Thumb, 74 bytes, Stack size 24 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_4IN37G_Clear &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[83]"></a>EPD_2IN36G_Clear</STRONG> (Thumb, 98 bytes, Stack size 24 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_2IN36G_Clear &rArr; EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
-<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[8a]"></a>EPD_4IN37G_Display</STRONG> (Thumb, 72 bytes, Stack size 32 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = EPD_4IN37G_Display &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[89]"></a>EPD_2IN36G_Display</STRONG> (Thumb, 84 bytes, Stack size 32 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = EPD_2IN36G_Display &rArr; EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
-<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[92]"></a>EPD_4IN37G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Sleep &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[92]"></a>EPD_2IN36G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_Sleep &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
-<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[9a]"></a>DEV_SPI_WriteByte</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text))
 <P><STRONG><a name="[9a]"></a>DEV_SPI_WriteByte</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -569,8 +569,8 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit
 <BR>[Calls]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[81]"></a>DEV_Module_Init</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
 <P><STRONG><a name="[81]"></a>DEV_Module_Init</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -578,7 +578,7 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[94]"></a>DEV_Module_Exit</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
 <P><STRONG><a name="[94]"></a>DEV_Module_Exit</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
@@ -586,17 +586,17 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[85]"></a>Paint_NewImage</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[85]"></a>Paint_NewImage</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_NewImage
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_NewImage
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[87]"></a>Paint_SelectImage</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[87]"></a>Paint_SelectImage</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[9c]"></a>Paint_SetRotate</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
 <P><STRONG><a name="[9c]"></a>Paint_SetRotate</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@@ -608,7 +608,7 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[9d]"></a>Paint_SetMirroring</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
 <P><STRONG><a name="[9d]"></a>Paint_SetMirroring</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@@ -627,10 +627,10 @@ Global Symbols
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[88]"></a>Paint_Clear</STRONG> (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))
+<P><STRONG><a name="[8a]"></a>Paint_Clear</STRONG> (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = Paint_Clear
 <BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = Paint_Clear
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[9f]"></a>Paint_ClearWindows</STRONG> (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED)
 <P><STRONG><a name="[9f]"></a>Paint_ClearWindows</STRONG> (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED)
@@ -645,7 +645,7 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[8c]"></a>Paint_DrawLine</STRONG> (Thumb, 662 bytes, Stack size 48 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[8c]"></a>Paint_DrawLine</STRONG> (Thumb, 662 bytes, Stack size 48 bytes, gui_paint.o(.text))
@@ -655,7 +655,7 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
 <BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
 <BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[8d]"></a>Paint_DrawRectangle</STRONG> (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[8d]"></a>Paint_DrawRectangle</STRONG> (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text))
@@ -664,7 +664,7 @@ Global Symbols
 <BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[8e]"></a>Paint_DrawCircle</STRONG> (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[8e]"></a>Paint_DrawCircle</STRONG> (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text))
@@ -673,7 +673,7 @@ Global Symbols
 <BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
 <BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[a0]"></a>Paint_DrawChar</STRONG> (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[a0]"></a>Paint_DrawChar</STRONG> (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text))
@@ -693,7 +693,7 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
 <BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
 <BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[90]"></a>Paint_DrawString_CN</STRONG> (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[90]"></a>Paint_DrawString_CN</STRONG> (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text))
@@ -701,7 +701,7 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 <BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[91]"></a>Paint_DrawNum</STRONG> (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text))
 <P><STRONG><a name="[91]"></a>Paint_DrawNum</STRONG> (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text))
@@ -711,17 +711,17 @@ Global Symbols
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
 <LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[a1]"></a>Paint_DrawTime</STRONG> (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED)
 <P><STRONG><a name="[a1]"></a>Paint_DrawTime</STRONG> (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED)
 <BR><BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 <BR><BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[89]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))
+<P><STRONG><a name="[88]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_DrawBitMap
 <BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_DrawBitMap
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[a2]"></a>Paint_DrawBitMap_Paste</STRONG> (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED)
 <P><STRONG><a name="[a2]"></a>Paint_DrawBitMap_Paste</STRONG> (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED)
@@ -935,10 +935,10 @@ Global Symbols
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
 <BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
 <LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[10e]"></a>HAL_SuspendTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
 <P><STRONG><a name="[10e]"></a>HAL_SuspendTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
@@ -1055,16 +1055,16 @@ Global Symbols
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[96]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
 <P><STRONG><a name="[96]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
-<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[76]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
 <P><STRONG><a name="[76]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
 <BR><BR>[Called By]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <BR><BR>[Called By]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
 <LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[120]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
 <P><STRONG><a name="[120]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
@@ -1387,13 +1387,13 @@ Global Symbols
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
 <LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
 <LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
 <LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
-<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 <LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
 <LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
 <LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetMirroring
 <LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetMirroring
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 <LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
 <LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 <LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
 <LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetRotate
 <LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetRotate
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[143]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
 <P><STRONG><a name="[143]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
@@ -1405,65 +1405,65 @@ Global Symbols
 <P><STRONG><a name="[93]"></a>free</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
 <P><STRONG><a name="[93]"></a>free</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = free
 <BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = free
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[84]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
 <P><STRONG><a name="[84]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
 <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
 <BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
+<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2in36g_test
 </UL>
 </UL>
 <P>
 <P>
 <H3>
 <H3>
 Local Symbols
 Local Symbols
 </H3>
 </H3>
-<P><STRONG><a name="[95]"></a>EPD_4IN37G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_4IN37G_ReadBusyH &rArr; __2printf
+<P><STRONG><a name="[95]"></a>EPD_2IN36G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_2IN36G_ReadBusyH &rArr; __2printf
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
 <LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
 <LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 <LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[97]"></a>EPD_4IN37G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[97]"></a>EPD_2IN36G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_2IN36G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[98]"></a>EPD_4IN37G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[98]"></a>EPD_2IN36G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 <LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
-<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
-<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
-<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
+<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Sleep
+<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Init
+<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
+<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_TurnOnDisplay
 </UL>
 </UL>
 
 
-<P><STRONG><a name="[99]"></a>EPD_4IN37G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
-<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
+<P><STRONG><a name="[99]"></a>EPD_2IN36G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_2in36g.o(.text))
+<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_2IN36G_TurnOnDisplay &rArr; EPD_2IN36G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
 </UL>
 </UL>
-<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
-<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
-<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
+<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendData
+<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_SendCommand
+<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_ReadBusyH
 </UL>
 </UL>
-<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
-<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
+<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Display
+<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_2IN36G_Clear
 </UL>
 </UL>
 
 
 <P><STRONG><a name="[a4]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text))
 <P><STRONG><a name="[a4]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text))

+ 405 - 377
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map

@@ -16,7 +16,7 @@ Section Cross References
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
-    main.o(.text) refers to epd_4in37g_test.o(.text) for EPD_4in37g_test
+    main.o(.text) refers to epd_2in36g_test.o(.text) for EPD_2in36g_test
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to main.o(.text) for Error_Handler
     spi.o(.text) refers to main.o(.text) for Error_Handler
@@ -569,6 +569,17 @@ Section Cross References
     epd_7in3g_test.o(.text) refers to font16.o(.data) for Font16
     epd_7in3g_test.o(.text) refers to font16.o(.data) for Font16
     epd_7in3g_test.o(.text) refers to font12.o(.data) for Font12
     epd_7in3g_test.o(.text) refers to font12.o(.data) for Font12
     epd_7in3g_test.o(.text) refers to font24cn.o(.data) for Font24CN
     epd_7in3g_test.o(.text) refers to font24cn.o(.data) for Font24CN
+    epd_2in36g_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in36g_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
+    epd_2in36g_test.o(.text) refers to epd_2in36g.o(.text) for EPD_2IN36G_Init
+    epd_2in36g_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in36g_test.o(.text) refers to malloc.o(i.malloc) for malloc
+    epd_2in36g_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
+    epd_2in36g_test.o(.text) refers to malloc.o(i.free) for free
+    epd_2in36g_test.o(.text) refers to imagedata2.o(.constdata) for gImage_2in36g
+    epd_2in36g_test.o(.text) refers to font16.o(.data) for Font16
+    epd_2in36g_test.o(.text) refers to font12.o(.data) for Font12
+    epd_2in36g_test.o(.text) refers to font24cn.o(.data) for Font24CN
     epd_1in02d.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     epd_1in02d.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     epd_1in02d.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_1in02d.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_1in02d.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
     epd_1in02d.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
@@ -762,6 +773,10 @@ Section Cross References
     epd_7in3g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_7in3g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
     epd_7in3g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
     epd_7in3g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
     epd_7in3g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
     epd_7in3g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
+    epd_2in36g.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
+    epd_2in36g.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
+    epd_2in36g.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin
+    epd_2in36g.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
     dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
     dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
     dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     dev_config.o(.text) refers to spi.o(.bss) for hspi1
     dev_config.o(.text) refers to spi.o(.bss) for hspi1
@@ -1174,6 +1189,7 @@ Removing Unused input sections from the image.
     Removing imagedata2.o(.constdata), (7056 bytes).
     Removing imagedata2.o(.constdata), (7056 bytes).
     Removing imagedata2.o(.constdata), (16800 bytes).
     Removing imagedata2.o(.constdata), (16800 bytes).
     Removing imagedata2.o(.constdata), (96000 bytes).
     Removing imagedata2.o(.constdata), (96000 bytes).
+    Removing imagedata2.o(.constdata), (47104 bytes).
     Removing epd_1in02_test.o(.rev16_text), (4 bytes).
     Removing epd_1in02_test.o(.rev16_text), (4 bytes).
     Removing epd_1in02_test.o(.revsh_text), (4 bytes).
     Removing epd_1in02_test.o(.revsh_text), (4 bytes).
     Removing epd_1in02_test.o(.rrx_text), (6 bytes).
     Removing epd_1in02_test.o(.rrx_text), (6 bytes).
@@ -1346,10 +1362,14 @@ Removing Unused input sections from the image.
     Removing epd_4in37g_test.o(.rev16_text), (4 bytes).
     Removing epd_4in37g_test.o(.rev16_text), (4 bytes).
     Removing epd_4in37g_test.o(.revsh_text), (4 bytes).
     Removing epd_4in37g_test.o(.revsh_text), (4 bytes).
     Removing epd_4in37g_test.o(.rrx_text), (6 bytes).
     Removing epd_4in37g_test.o(.rrx_text), (6 bytes).
+    Removing epd_4in37g_test.o(.text), (1052 bytes).
     Removing epd_7in3g_test.o(.rev16_text), (4 bytes).
     Removing epd_7in3g_test.o(.rev16_text), (4 bytes).
     Removing epd_7in3g_test.o(.revsh_text), (4 bytes).
     Removing epd_7in3g_test.o(.revsh_text), (4 bytes).
     Removing epd_7in3g_test.o(.rrx_text), (6 bytes).
     Removing epd_7in3g_test.o(.rrx_text), (6 bytes).
     Removing epd_7in3g_test.o(.text), (924 bytes).
     Removing epd_7in3g_test.o(.text), (924 bytes).
+    Removing epd_2in36g_test.o(.rev16_text), (4 bytes).
+    Removing epd_2in36g_test.o(.revsh_text), (4 bytes).
+    Removing epd_2in36g_test.o(.rrx_text), (6 bytes).
     Removing epd_1in02d.o(.rev16_text), (4 bytes).
     Removing epd_1in02d.o(.rev16_text), (4 bytes).
     Removing epd_1in02d.o(.revsh_text), (4 bytes).
     Removing epd_1in02d.o(.revsh_text), (4 bytes).
     Removing epd_1in02d.o(.rrx_text), (6 bytes).
     Removing epd_1in02d.o(.rrx_text), (6 bytes).
@@ -1541,10 +1561,14 @@ Removing Unused input sections from the image.
     Removing epd_4in37g.o(.rev16_text), (4 bytes).
     Removing epd_4in37g.o(.rev16_text), (4 bytes).
     Removing epd_4in37g.o(.revsh_text), (4 bytes).
     Removing epd_4in37g.o(.revsh_text), (4 bytes).
     Removing epd_4in37g.o(.rrx_text), (6 bytes).
     Removing epd_4in37g.o(.rrx_text), (6 bytes).
+    Removing epd_4in37g.o(.text), (748 bytes).
     Removing epd_7in3g.o(.rev16_text), (4 bytes).
     Removing epd_7in3g.o(.rev16_text), (4 bytes).
     Removing epd_7in3g.o(.revsh_text), (4 bytes).
     Removing epd_7in3g.o(.revsh_text), (4 bytes).
     Removing epd_7in3g.o(.rrx_text), (6 bytes).
     Removing epd_7in3g.o(.rrx_text), (6 bytes).
     Removing epd_7in3g.o(.text), (884 bytes).
     Removing epd_7in3g.o(.text), (884 bytes).
+    Removing epd_2in36g.o(.rev16_text), (4 bytes).
+    Removing epd_2in36g.o(.revsh_text), (4 bytes).
+    Removing epd_2in36g.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
@@ -1555,8 +1579,8 @@ Removing Unused input sections from the image.
     Removing font8.o(.data), (8 bytes).
     Removing font8.o(.data), (8 bytes).
     Removing font12cn.o(.constdata), (1494 bytes).
     Removing font12cn.o(.constdata), (1494 bytes).
     Removing font12cn.o(.data), (12 bytes).
     Removing font12cn.o(.data), (12 bytes).
-    Removing font16.o(.constdata), (3040 bytes).
-    Removing font16.o(.data), (8 bytes).
+    Removing font20.o(.constdata), (3800 bytes).
+    Removing font20.o(.data), (8 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.data), (8 bytes).
     Removing font24.o(.data), (8 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
@@ -1621,7 +1645,7 @@ Removing Unused input sections from the image.
     Removing cdrcmple.o(.text), (48 bytes).
     Removing cdrcmple.o(.text), (48 bytes).
     Removing depilogue.o(.text), (186 bytes).
     Removing depilogue.o(.text), (186 bytes).
 
 
-514 unused section(s) (total 1075618 bytes) removed from the image.
+523 unused section(s) (total 1125310 bytes) removed from the image.
 
 
 ==============================================================================
 ==============================================================================
 
 
@@ -1653,44 +1677,44 @@ Image Symbol Table
     ../Src/stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
     ../Src/stm32f1xx_it.c                    0x00000000   Number         0  stm32f1xx_it.o ABSOLUTE
     ../Src/system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
     ../Src/system_stm32f1xx.c                0x00000000   Number         0  system_stm32f1xx.o ABSOLUTE
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
-    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
-    ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
-    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
+    ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
-    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpya.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpya.o ABSOLUTE
+    ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
     ../clib/microlib/string/memset.c         0x00000000   Number         0  memseta.o ABSOLUTE
     ../clib/microlib/string/memset.c         0x00000000   Number         0  memseta.o ABSOLUTE
     ../clib/microlib/stubs.s                 0x00000000   Number         0  iusefp.o ABSOLUTE
     ../clib/microlib/stubs.s                 0x00000000   Number         0  iusefp.o ABSOLUTE
     ../fplib/microlib/fpadd.c                0x00000000   Number         0  dadd.o ABSOLUTE
     ../fplib/microlib/fpadd.c                0x00000000   Number         0  dadd.o ABSOLUTE
@@ -1735,6 +1759,7 @@ Image Symbol Table
     ..\User\Examples\EPD_2in13b_V4_test.c    0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13b_V4_test.c    0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13bc_test.c      0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13bc_test.c      0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13d_test.c       0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
     ..\User\Examples\EPD_2in13d_test.c       0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
+    ..\User\Examples\EPD_2in36g_test.c       0x00000000   Number         0  epd_2in36g_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66_test.c        0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66_test.c        0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66b_test.c       0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\User\Examples\EPD_2in66b_test.c       0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\User\Examples\EPD_2in7_test.c         0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
     ..\User\Examples\EPD_2in7_test.c         0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
@@ -1789,6 +1814,7 @@ Image Symbol Table
     ..\User\e-Paper\EPD_2in13b_V4.c          0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13b_V4.c          0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13bc.c            0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13bc.c            0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13d.c             0x00000000   Number         0  epd_2in13d.o ABSOLUTE
     ..\User\e-Paper\EPD_2in13d.c             0x00000000   Number         0  epd_2in13d.o ABSOLUTE
+    ..\User\e-Paper\EPD_2in36g.c             0x00000000   Number         0  epd_2in36g.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66.c              0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66.c              0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66b.c             0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\User\e-Paper\EPD_2in66b.c             0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\User\e-Paper\EPD_2in7.c               0x00000000   Number         0  epd_2in7.o ABSOLUTE
     ..\User\e-Paper\EPD_2in7.c               0x00000000   Number         0  epd_2in7.o ABSOLUTE
@@ -1834,6 +1860,7 @@ Image Symbol Table
     ..\\User\\Examples\\EPD_2in13b_V4_test.c 0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13b_V4_test.c 0x00000000   Number         0  epd_2in13b_v4_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13bc_test.c   0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13bc_test.c   0x00000000   Number         0  epd_2in13bc_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13d_test.c    0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in13d_test.c    0x00000000   Number         0  epd_2in13d_test.o ABSOLUTE
+    ..\\User\\Examples\\EPD_2in36g_test.c    0x00000000   Number         0  epd_2in36g_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66_test.c     0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66_test.c     0x00000000   Number         0  epd_2in66_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66b_test.c    0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in66b_test.c    0x00000000   Number         0  epd_2in66b_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in7_test.c      0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
     ..\\User\\Examples\\EPD_2in7_test.c      0x00000000   Number         0  epd_2in7_test.o ABSOLUTE
@@ -1879,6 +1906,7 @@ Image Symbol Table
     ..\\User\\e-Paper\\EPD_2in13b_V4.c       0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13b_V4.c       0x00000000   Number         0  epd_2in13b_v4.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13bc.c         0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13bc.c         0x00000000   Number         0  epd_2in13bc.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13d.c          0x00000000   Number         0  epd_2in13d.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in13d.c          0x00000000   Number         0  epd_2in13d.o ABSOLUTE
+    ..\\User\\e-Paper\\EPD_2in36g.c          0x00000000   Number         0  epd_2in36g.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66.c           0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66.c           0x00000000   Number         0  epd_2in66.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66b.c          0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in66b.c          0x00000000   Number         0  epd_2in66b.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in7.c            0x00000000   Number         0  epd_2in7.o ABSOLUTE
     ..\\User\\e-Paper\\EPD_2in7.c            0x00000000   Number         0  epd_2in7.o ABSOLUTE
@@ -1932,87 +1960,87 @@ Image Symbol Table
     .text                                    0x0800031c   Section        0  usart.o(.text)
     .text                                    0x0800031c   Section        0  usart.o(.text)
     .text                                    0x080003f4   Section        0  stm32f1xx_it.o(.text)
     .text                                    0x080003f4   Section        0  stm32f1xx_it.o(.text)
     .text                                    0x08000424   Section        0  stm32f1xx_hal_msp.o(.text)
     .text                                    0x08000424   Section        0  stm32f1xx_hal_msp.o(.text)
-    .text                                    0x08000460   Section        0  epd_4in37g_test.o(.text)
-    .text                                    0x08000890   Section        0  epd_4in37g.o(.text)
-    EPD_4IN37G_ReadBusyH                     0x08000891   Thumb Code    40  epd_4in37g.o(.text)
-    EPD_4IN37G_SendCommand                   0x08000ac1   Thumb Code    46  epd_4in37g.o(.text)
-    EPD_4IN37G_SendData                      0x08000aef   Thumb Code    46  epd_4in37g.o(.text)
-    EPD_4IN37G_TurnOnDisplay                 0x08000b1d   Thumb Code    36  epd_4in37g.o(.text)
-    .text                                    0x08000b7c   Section        0  dev_config.o(.text)
-    .text                                    0x08000be4   Section        0  gui_paint.o(.text)
-    .text                                    0x08001a90   Section        0  system_stm32f1xx.o(.text)
-    .text                                    0x08001b54   Section        0  stm32f1xx_hal_spi.o(.text)
-    SPI_WaitFlagStateUntilTimeout            0x08001c3d   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTxTransaction                   0x08001d0f   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTransaction                     0x08001ecf   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseTx_ISR                          0x080022af   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_8BIT                           0x08002331   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_16BIT                          0x0800234f   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRx_ISR                          0x08002411   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_8BIT                           0x0800245d   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_16BIT                          0x0800247b   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRxTx_ISR                        0x0800249b   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_8BIT                     0x08002539   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_8BIT                     0x08002567   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_16BIT                    0x08002595   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_16BIT                    0x080025c3   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAError                             0x0800275d   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitCplt                      0x0800277f   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitCplt                  0x080027e7   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAReceiveCplt                       0x080028c1   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfReceiveCplt                   0x08002931   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitReceiveCplt               0x0800293b   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitReceiveCplt           0x08002999   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortRx_ISR                          0x08002be7   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortTx_ISR                          0x08002c39   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
-    SPI_DMARxAbortCallback                   0x08002d79   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATxAbortCallback                   0x08002ddb   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAAbortOnError                      0x08003025   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
-    .text                                    0x0800313c   Section        0  stm32f1xx_hal.o(.text)
-    .text                                    0x080032c4   Section        0  stm32f1xx_hal_rcc.o(.text)
-    RCC_Delay                                0x080033bf   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
-    .text                                    0x08003b8c   Section        0  stm32f1xx_hal_gpio.o(.text)
-    .text                                    0x08003f60   Section        0  stm32f1xx_hal_dma.o(.text)
-    DMA_SetConfig                            0x0800406f   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
-    .text                                    0x08004ba8   Section        0  stm32f1xx_hal_cortex.o(.text)
-    .text                                    0x08004dcc   Section        0  stm32f1xx_hal_uart.o(.text)
-    UART_SetConfig                           0x08004dcd   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
-    UART_WaitOnFlagUntilTimeout              0x080050ad   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
-    UART_EndRxTransfer                       0x0800535d   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
-    UART_EndTxTransfer                       0x08005379   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
-    UART_DMAError                            0x0800538b   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxHalfCplt                       0x080053d7   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMATransmitCplt                     0x080053e3   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxHalfCplt                       0x0800549f   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMAReceiveCplt                      0x080054ab   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxAbortCallback                  0x080057df   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxAbortCallback                  0x0800580b   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxOnlyAbortCallback              0x08005901   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxOnlyAbortCallback              0x08005975   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_EndTransmit_IT                      0x080059f1   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
-    UART_Transmit_IT                         0x08005a0b   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    UART_DMAAbortOnError                     0x08005a69   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
-    UART_Receive_IT                          0x08005a79   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    .text                                    0x08005d68   Section        0  memseta.o(.text)
-    .text                                    0x08005d8c   Section        0  uidiv.o(.text)
-    .text                                    0x08005db8   Section       36  init.o(.text)
-    i.__0printf$3                            0x08005ddc   Section        0  printf3.o(i.__0printf$3)
-    i.__scatterload_copy                     0x08005dfc   Section       14  handlers.o(i.__scatterload_copy)
-    i.__scatterload_null                     0x08005e0a   Section        2  handlers.o(i.__scatterload_null)
-    i.__scatterload_zeroinit                 0x08005e0c   Section       14  handlers.o(i.__scatterload_zeroinit)
-    i._printf_core                           0x08005e1c   Section        0  printf3.o(i._printf_core)
-    _printf_core                             0x08005e1d   Thumb Code   436  printf3.o(i._printf_core)
-    i.free                                   0x08005fd4   Section        0  malloc.o(i.free)
-    i.malloc                                 0x08006024   Section        0  malloc.o(i.malloc)
-    .constdata                               0x08006090   Section    47104  imagedata2.o(.constdata)
-    .constdata                               0x08011890   Section     1140  font12.o(.constdata)
-    .constdata                               0x08011d04   Section     3800  font20.o(.constdata)
-    .constdata                               0x08012bdc   Section     4482  font24cn.o(.constdata)
-    .constdata                               0x08013d5e   Section       16  system_stm32f1xx.o(.constdata)
-    .constdata                               0x08013d6e   Section        8  system_stm32f1xx.o(.constdata)
-    .conststring                             0x08013d78   Section      233  gui_paint.o(.conststring)
+    .text                                    0x08000460   Section        0  epd_2in36g_test.o(.text)
+    .text                                    0x080009b0   Section        0  epd_2in36g.o(.text)
+    EPD_2IN36G_ReadBusyH                     0x080009b1   Thumb Code    40  epd_2in36g.o(.text)
+    EPD_2IN36G_SendCommand                   0x08000bc9   Thumb Code    46  epd_2in36g.o(.text)
+    EPD_2IN36G_SendData                      0x08000bf7   Thumb Code    46  epd_2in36g.o(.text)
+    EPD_2IN36G_TurnOnDisplay                 0x08000c25   Thumb Code    36  epd_2in36g.o(.text)
+    .text                                    0x08000c84   Section        0  dev_config.o(.text)
+    .text                                    0x08000cec   Section        0  gui_paint.o(.text)
+    .text                                    0x08001b98   Section        0  system_stm32f1xx.o(.text)
+    .text                                    0x08001c5c   Section        0  stm32f1xx_hal_spi.o(.text)
+    SPI_WaitFlagStateUntilTimeout            0x08001d45   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTxTransaction                   0x08001e17   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTransaction                     0x08001fd7   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseTx_ISR                          0x080023b7   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_8BIT                           0x08002439   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_16BIT                          0x08002457   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRx_ISR                          0x08002519   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_8BIT                           0x08002565   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_16BIT                          0x08002583   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRxTx_ISR                        0x080025a3   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_8BIT                     0x08002641   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_8BIT                     0x0800266f   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_16BIT                    0x0800269d   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_16BIT                    0x080026cb   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAError                             0x08002865   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitCplt                      0x08002887   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitCplt                  0x080028ef   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAReceiveCplt                       0x080029c9   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfReceiveCplt                   0x08002a39   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitReceiveCplt               0x08002a43   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitReceiveCplt           0x08002aa1   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortRx_ISR                          0x08002cef   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortTx_ISR                          0x08002d41   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
+    SPI_DMARxAbortCallback                   0x08002e81   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATxAbortCallback                   0x08002ee3   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAAbortOnError                      0x0800312d   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
+    .text                                    0x08003244   Section        0  stm32f1xx_hal.o(.text)
+    .text                                    0x080033cc   Section        0  stm32f1xx_hal_rcc.o(.text)
+    RCC_Delay                                0x080034c7   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
+    .text                                    0x08003c94   Section        0  stm32f1xx_hal_gpio.o(.text)
+    .text                                    0x08004068   Section        0  stm32f1xx_hal_dma.o(.text)
+    DMA_SetConfig                            0x08004177   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
+    .text                                    0x08004cb0   Section        0  stm32f1xx_hal_cortex.o(.text)
+    .text                                    0x08004ed4   Section        0  stm32f1xx_hal_uart.o(.text)
+    UART_SetConfig                           0x08004ed5   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
+    UART_WaitOnFlagUntilTimeout              0x080051b5   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
+    UART_EndRxTransfer                       0x08005465   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
+    UART_EndTxTransfer                       0x08005481   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
+    UART_DMAError                            0x08005493   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxHalfCplt                       0x080054df   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMATransmitCplt                     0x080054eb   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxHalfCplt                       0x080055a7   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMAReceiveCplt                      0x080055b3   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxAbortCallback                  0x080058e7   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxAbortCallback                  0x08005913   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxOnlyAbortCallback              0x08005a09   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxOnlyAbortCallback              0x08005a7d   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_EndTransmit_IT                      0x08005af9   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
+    UART_Transmit_IT                         0x08005b13   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    UART_DMAAbortOnError                     0x08005b71   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
+    UART_Receive_IT                          0x08005b81   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    .text                                    0x08005e70   Section        0  memseta.o(.text)
+    .text                                    0x08005e94   Section        0  uidiv.o(.text)
+    .text                                    0x08005ec0   Section       36  init.o(.text)
+    i.__0printf$3                            0x08005ee4   Section        0  printf3.o(i.__0printf$3)
+    i.__scatterload_copy                     0x08005f04   Section       14  handlers.o(i.__scatterload_copy)
+    i.__scatterload_null                     0x08005f12   Section        2  handlers.o(i.__scatterload_null)
+    i.__scatterload_zeroinit                 0x08005f14   Section       14  handlers.o(i.__scatterload_zeroinit)
+    i._printf_core                           0x08005f24   Section        0  printf3.o(i._printf_core)
+    _printf_core                             0x08005f25   Thumb Code   436  printf3.o(i._printf_core)
+    i.free                                   0x080060dc   Section        0  malloc.o(i.free)
+    i.malloc                                 0x0800612c   Section        0  malloc.o(i.malloc)
+    .constdata                               0x08006198   Section    12432  imagedata2.o(.constdata)
+    .constdata                               0x08009228   Section     1140  font12.o(.constdata)
+    .constdata                               0x0800969c   Section     3040  font16.o(.constdata)
+    .constdata                               0x0800a27c   Section     4482  font24cn.o(.constdata)
+    .constdata                               0x0800b3fe   Section       16  system_stm32f1xx.o(.constdata)
+    .constdata                               0x0800b40e   Section        8  system_stm32f1xx.o(.constdata)
+    .conststring                             0x0800b418   Section      233  gui_paint.o(.conststring)
     .data                                    0x20000000   Section        8  font12.o(.data)
     .data                                    0x20000000   Section        8  font12.o(.data)
-    .data                                    0x20000008   Section        8  font20.o(.data)
+    .data                                    0x20000008   Section        8  font16.o(.data)
     .data                                    0x20000010   Section       12  font24cn.o(.data)
     .data                                    0x20000010   Section       12  font24cn.o(.data)
     .data                                    0x2000001c   Section        4  system_stm32f1xx.o(.data)
     .data                                    0x2000001c   Section        4  system_stm32f1xx.o(.data)
     .data                                    0x20000020   Section       12  stm32f1xx_hal.o(.data)
     .data                                    0x20000020   Section       12  stm32f1xx_hal.o(.data)
@@ -2171,201 +2199,201 @@ Image Symbol Table
     PendSV_Handler                           0x08000409   Thumb Code     2  stm32f1xx_it.o(.text)
     PendSV_Handler                           0x08000409   Thumb Code     2  stm32f1xx_it.o(.text)
     SysTick_Handler                          0x0800040b   Thumb Code     4  stm32f1xx_it.o(.text)
     SysTick_Handler                          0x0800040b   Thumb Code     4  stm32f1xx_it.o(.text)
     HAL_MspInit                              0x08000425   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
     HAL_MspInit                              0x08000425   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
-    EPD_4in37g_test                          0x08000461   Thumb Code   688  epd_4in37g_test.o(.text)
-    EPD_4IN37G_Init                          0x080008b9   Thumb Code   344  epd_4in37g.o(.text)
-    EPD_4IN37G_Clear                         0x08000a11   Thumb Code    74  epd_4in37g.o(.text)
-    EPD_4IN37G_Display                       0x08000a5b   Thumb Code    72  epd_4in37g.o(.text)
-    EPD_4IN37G_Sleep                         0x08000aa3   Thumb Code    30  epd_4in37g.o(.text)
-    DEV_SPI_WriteByte                        0x08000b7d   Thumb Code    18  dev_config.o(.text)
-    DEV_Module_Init                          0x08000b8f   Thumb Code    38  dev_config.o(.text)
-    DEV_Module_Exit                          0x08000bb5   Thumb Code    38  dev_config.o(.text)
-    Paint_NewImage                           0x08000be5   Thumb Code    56  gui_paint.o(.text)
-    Paint_SelectImage                        0x08000c1d   Thumb Code     6  gui_paint.o(.text)
-    Paint_SetRotate                          0x08000c23   Thumb Code    44  gui_paint.o(.text)
-    Paint_SetScale                           0x08000c4f   Thumb Code    80  gui_paint.o(.text)
-    Paint_SetMirroring                       0x08000c9f   Thumb Code    62  gui_paint.o(.text)
-    Paint_SetPixel                           0x08000cdd   Thumb Code   238  gui_paint.o(.text)
-    Paint_Clear                              0x08000dcb   Thumb Code   156  gui_paint.o(.text)
-    Paint_ClearWindows                       0x08000e67   Thumb Code    52  gui_paint.o(.text)
-    Paint_DrawPoint                          0x08000e9b   Thumb Code   180  gui_paint.o(.text)
-    Paint_DrawLine                           0x08000f4f   Thumb Code   662  gui_paint.o(.text)
-    Paint_DrawRectangle                      0x080011e5   Thumb Code   170  gui_paint.o(.text)
-    Paint_DrawCircle                         0x0800128f   Thumb Code   528  gui_paint.o(.text)
-    Paint_DrawChar                           0x0800149f   Thumb Code   172  gui_paint.o(.text)
-    Paint_DrawString_EN                      0x0800154b   Thumb Code   116  gui_paint.o(.text)
-    Paint_DrawString_CN                      0x080015bf   Thumb Code   518  gui_paint.o(.text)
-    Paint_DrawNum                            0x080017c5   Thumb Code   140  gui_paint.o(.text)
-    Paint_DrawTime                           0x08001851   Thumb Code   282  gui_paint.o(.text)
-    Paint_DrawBitMap                         0x0800196b   Thumb Code    46  gui_paint.o(.text)
-    Paint_DrawBitMap_Paste                   0x08001999   Thumb Code   110  gui_paint.o(.text)
-    Paint_DrawBitMap_Block                   0x08001a07   Thumb Code    54  gui_paint.o(.text)
-    SystemInit                               0x08001a91   Thumb Code    60  system_stm32f1xx.o(.text)
-    SystemCoreClockUpdate                    0x08001acd   Thumb Code   108  system_stm32f1xx.o(.text)
-    HAL_SPI_Init                             0x08001b57   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DeInit                           0x08001c0d   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit                         0x08001d33   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive                  0x08001f3f   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive                          0x0800213d   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxCpltCallback                   0x080022ab   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_ErrorCallback                    0x080022ad   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_IT                      0x0800236d   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxCpltCallback                   0x0800240f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxCpltCallback                 0x08002499   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_IT               0x080025f1   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_IT                       0x080026ad   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxHalfCpltCallback               0x080027e5   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_DMA                     0x080027f1   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxHalfCpltCallback               0x0800292f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxHalfCpltCallback             0x08002997   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_DMA              0x080029a3   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_DMA                      0x08002ad1   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort                            0x08002c55   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_AbortCpltCallback                0x08002d77   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort_IT                         0x08002e4d   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAPause                         0x08002f95   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAResume                        0x08002fbb   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAStop                          0x08002fe1   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_IRQHandler                       0x08003035   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetState                         0x0800312f   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetError                         0x08003135   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
-    HAL_InitTick                             0x0800313f   Thumb Code    58  stm32f1xx_hal.o(.text)
-    HAL_Init                                 0x08003179   Thumb Code    32  stm32f1xx_hal.o(.text)
-    HAL_MspDeInit                            0x08003199   Thumb Code     2  stm32f1xx_hal.o(.text)
-    HAL_DeInit                               0x0800319b   Thumb Code    26  stm32f1xx_hal.o(.text)
-    HAL_IncTick                              0x080031b5   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_GetTick                              0x080031c1   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetTickPrio                          0x080031c7   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_SetTickFreq                          0x080031cd   Thumb Code    30  stm32f1xx_hal.o(.text)
-    HAL_GetTickFreq                          0x080031eb   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_Delay                                0x080031f1   Thumb Code    34  stm32f1xx_hal.o(.text)
-    HAL_SuspendTick                          0x08003213   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_ResumeTick                           0x08003221   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_GetHalVersion                        0x0800322f   Thumb Code     4  stm32f1xx_hal.o(.text)
-    HAL_GetREVID                             0x08003233   Thumb Code     8  stm32f1xx_hal.o(.text)
-    HAL_GetDEVID                             0x0800323b   Thumb Code    10  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw0                             0x08003245   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw1                             0x0800324b   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw2                             0x08003251   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGSleepMode            0x08003257   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGSleepMode           0x08003263   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStopMode             0x0800326f   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStopMode            0x0800327b   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStandbyMode          0x08003287   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStandbyMode         0x08003293   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_RCC_DeInit                           0x080032c5   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_OscConfig                        0x080033df   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetSysClockFreq                  0x08003817   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_ClockConfig                      0x0800386f   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_MCOConfig                        0x080039db   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_EnableCSS                        0x08003a1b   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_DisableCSS                       0x08003a23   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetHCLKFreq                      0x08003a2b   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK1Freq                     0x08003a31   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK2Freq                     0x08003a47   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetOscConfig                     0x08003a5d   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetClockConfig                   0x08003b05   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_CSSCallback                      0x08003b39   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_NMI_IRQHandler                   0x08003b3b   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_GPIO_Init                            0x08003b8d   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_DeInit                          0x08003d99   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_ReadPin                         0x08003ed9   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_WritePin                        0x08003ee7   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_TogglePin                       0x08003ef5   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_LockPin                         0x08003f05   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_Callback                   0x08003f2f   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_IRQHandler                 0x08003f31   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
-    HAL_DMA_Init                             0x08003f61   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_DeInit                           0x08003ff1   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start                            0x080040a7   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start_IT                         0x080040ff   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort                            0x0800417b   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort_IT                         0x080041c3   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_PollForTransfer                  0x08004301   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_IRQHandler                       0x08004825   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_RegisterCallback                 0x08004ac5   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_UnRegisterCallback               0x08004b15   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetState                         0x08004b6b   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetError                         0x08004b71   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
-    HAL_NVIC_SetPriorityGrouping             0x08004ba9   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPriority                     0x08004bc7   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_EnableIRQ                       0x08004c29   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_DisableIRQ                      0x08004c45   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SystemReset                     0x08004c69   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Config                       0x08004c83   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriorityGrouping             0x08004ca7   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriority                     0x08004cb1   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPendingIRQ                   0x08004d0f   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPendingIRQ                   0x08004d2b   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_ClearPendingIRQ                 0x08004d55   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetActive                       0x08004d71   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_CLKSourceConfig              0x08004d9b   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Callback                     0x08004db7   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_IRQHandler                   0x08004db9   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
-    HAL_UART_Init                            0x08004e91   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_Init                      0x08004ef5   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_Init                             0x08004f63   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_Init                  0x08004fe5   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DeInit                          0x08005079   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit                        0x08005125   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive                         0x080051ef   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_IT                     0x080052c3   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_IT                      0x08005305   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_ErrorCallback                   0x0800535b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxHalfCpltCallback              0x080053d5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxCpltCallback                  0x080053e1   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_DMA                    0x08005413   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxHalfCpltCallback              0x0800549d   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxCpltCallback                  0x080054a9   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_DMA                     0x080054e9   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAPause                        0x0800557f   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAResume                       0x080055e5   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAStop                         0x08005647   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort                           0x0800569f   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit                   0x08005733   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive                    0x08005783   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortCpltCallback               0x080057dd   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort_IT                        0x0800584d   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmitCpltCallback       0x080058ff   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit_IT                0x08005915   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceiveCpltCallback        0x08005973   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive_IT                 0x08005989   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_IRQHandler                      0x08005b0b   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_SendBreak                        0x08005c43   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_EnterMuteMode         0x08005c89   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_ExitMuteMode          0x08005cbb   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableTransmitter         0x08005ced   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableReceiver            0x08005d23   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetState                        0x08005d59   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetError                        0x08005d65   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
-    __aeabi_memset                           0x08005d69   Thumb Code    14  memseta.o(.text)
-    __aeabi_memset4                          0x08005d69   Thumb Code     0  memseta.o(.text)
-    __aeabi_memset8                          0x08005d69   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr                           0x08005d77   Thumb Code     4  memseta.o(.text)
-    __aeabi_memclr4                          0x08005d77   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr8                          0x08005d77   Thumb Code     0  memseta.o(.text)
-    _memset$wrapper                          0x08005d7b   Thumb Code    18  memseta.o(.text)
-    __aeabi_uidiv                            0x08005d8d   Thumb Code     0  uidiv.o(.text)
-    __aeabi_uidivmod                         0x08005d8d   Thumb Code    44  uidiv.o(.text)
-    __scatterload                            0x08005db9   Thumb Code    28  init.o(.text)
-    __scatterload_rt2                        0x08005db9   Thumb Code     0  init.o(.text)
-    __0printf$3                              0x08005ddd   Thumb Code    22  printf3.o(i.__0printf$3)
-    __1printf$3                              0x08005ddd   Thumb Code     0  printf3.o(i.__0printf$3)
-    __2printf                                0x08005ddd   Thumb Code     0  printf3.o(i.__0printf$3)
-    __scatterload_copy                       0x08005dfd   Thumb Code    14  handlers.o(i.__scatterload_copy)
-    __scatterload_null                       0x08005e0b   Thumb Code     2  handlers.o(i.__scatterload_null)
-    __scatterload_zeroinit                   0x08005e0d   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
-    free                                     0x08005fd5   Thumb Code    76  malloc.o(i.free)
-    malloc                                   0x08006025   Thumb Code    92  malloc.o(i.malloc)
-    Image4color                              0x08006090   Data       47104  imagedata2.o(.constdata)
-    Font12_Table                             0x08011890   Data        1140  font12.o(.constdata)
-    Font20_Table                             0x08011d04   Data        3800  font20.o(.constdata)
-    Font24CN_Table                           0x08012bdc   Data        4482  font24cn.o(.constdata)
-    AHBPrescTable                            0x08013d5e   Data          16  system_stm32f1xx.o(.constdata)
-    APBPrescTable                            0x08013d6e   Data           8  system_stm32f1xx.o(.constdata)
-    Region$$Table$$Base                      0x08013e64   Number         0  anon$$obj.o(Region$$Table)
-    Region$$Table$$Limit                     0x08013e84   Number         0  anon$$obj.o(Region$$Table)
+    EPD_2in36g_test                          0x08000461   Thumb Code   966  epd_2in36g_test.o(.text)
+    EPD_2IN36G_Init                          0x080009d9   Thumb Code   284  epd_2in36g.o(.text)
+    EPD_2IN36G_Clear                         0x08000af5   Thumb Code    98  epd_2in36g.o(.text)
+    EPD_2IN36G_Display                       0x08000b57   Thumb Code    84  epd_2in36g.o(.text)
+    EPD_2IN36G_Sleep                         0x08000bab   Thumb Code    30  epd_2in36g.o(.text)
+    DEV_SPI_WriteByte                        0x08000c85   Thumb Code    18  dev_config.o(.text)
+    DEV_Module_Init                          0x08000c97   Thumb Code    38  dev_config.o(.text)
+    DEV_Module_Exit                          0x08000cbd   Thumb Code    38  dev_config.o(.text)
+    Paint_NewImage                           0x08000ced   Thumb Code    56  gui_paint.o(.text)
+    Paint_SelectImage                        0x08000d25   Thumb Code     6  gui_paint.o(.text)
+    Paint_SetRotate                          0x08000d2b   Thumb Code    44  gui_paint.o(.text)
+    Paint_SetScale                           0x08000d57   Thumb Code    80  gui_paint.o(.text)
+    Paint_SetMirroring                       0x08000da7   Thumb Code    62  gui_paint.o(.text)
+    Paint_SetPixel                           0x08000de5   Thumb Code   238  gui_paint.o(.text)
+    Paint_Clear                              0x08000ed3   Thumb Code   156  gui_paint.o(.text)
+    Paint_ClearWindows                       0x08000f6f   Thumb Code    52  gui_paint.o(.text)
+    Paint_DrawPoint                          0x08000fa3   Thumb Code   180  gui_paint.o(.text)
+    Paint_DrawLine                           0x08001057   Thumb Code   662  gui_paint.o(.text)
+    Paint_DrawRectangle                      0x080012ed   Thumb Code   170  gui_paint.o(.text)
+    Paint_DrawCircle                         0x08001397   Thumb Code   528  gui_paint.o(.text)
+    Paint_DrawChar                           0x080015a7   Thumb Code   172  gui_paint.o(.text)
+    Paint_DrawString_EN                      0x08001653   Thumb Code   116  gui_paint.o(.text)
+    Paint_DrawString_CN                      0x080016c7   Thumb Code   518  gui_paint.o(.text)
+    Paint_DrawNum                            0x080018cd   Thumb Code   140  gui_paint.o(.text)
+    Paint_DrawTime                           0x08001959   Thumb Code   282  gui_paint.o(.text)
+    Paint_DrawBitMap                         0x08001a73   Thumb Code    46  gui_paint.o(.text)
+    Paint_DrawBitMap_Paste                   0x08001aa1   Thumb Code   110  gui_paint.o(.text)
+    Paint_DrawBitMap_Block                   0x08001b0f   Thumb Code    54  gui_paint.o(.text)
+    SystemInit                               0x08001b99   Thumb Code    60  system_stm32f1xx.o(.text)
+    SystemCoreClockUpdate                    0x08001bd5   Thumb Code   108  system_stm32f1xx.o(.text)
+    HAL_SPI_Init                             0x08001c5f   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DeInit                           0x08001d15   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit                         0x08001e3b   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive                  0x08002047   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive                          0x08002245   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxCpltCallback                   0x080023b3   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_ErrorCallback                    0x080023b5   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_IT                      0x08002475   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxCpltCallback                   0x08002517   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxCpltCallback                 0x080025a1   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_IT               0x080026f9   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_IT                       0x080027b5   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxHalfCpltCallback               0x080028ed   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_DMA                     0x080028f9   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxHalfCpltCallback               0x08002a37   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxHalfCpltCallback             0x08002a9f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_DMA              0x08002aab   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_DMA                      0x08002bd9   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort                            0x08002d5d   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_AbortCpltCallback                0x08002e7f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort_IT                         0x08002f55   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAPause                         0x0800309d   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAResume                        0x080030c3   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAStop                          0x080030e9   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_IRQHandler                       0x0800313d   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetState                         0x08003237   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetError                         0x0800323d   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
+    HAL_InitTick                             0x08003247   Thumb Code    58  stm32f1xx_hal.o(.text)
+    HAL_Init                                 0x08003281   Thumb Code    32  stm32f1xx_hal.o(.text)
+    HAL_MspDeInit                            0x080032a1   Thumb Code     2  stm32f1xx_hal.o(.text)
+    HAL_DeInit                               0x080032a3   Thumb Code    26  stm32f1xx_hal.o(.text)
+    HAL_IncTick                              0x080032bd   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_GetTick                              0x080032c9   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetTickPrio                          0x080032cf   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_SetTickFreq                          0x080032d5   Thumb Code    30  stm32f1xx_hal.o(.text)
+    HAL_GetTickFreq                          0x080032f3   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_Delay                                0x080032f9   Thumb Code    34  stm32f1xx_hal.o(.text)
+    HAL_SuspendTick                          0x0800331b   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_ResumeTick                           0x08003329   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_GetHalVersion                        0x08003337   Thumb Code     4  stm32f1xx_hal.o(.text)
+    HAL_GetREVID                             0x0800333b   Thumb Code     8  stm32f1xx_hal.o(.text)
+    HAL_GetDEVID                             0x08003343   Thumb Code    10  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw0                             0x0800334d   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw1                             0x08003353   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw2                             0x08003359   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGSleepMode            0x0800335f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGSleepMode           0x0800336b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStopMode             0x08003377   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStopMode            0x08003383   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStandbyMode          0x0800338f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStandbyMode         0x0800339b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_RCC_DeInit                           0x080033cd   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_OscConfig                        0x080034e7   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetSysClockFreq                  0x0800391f   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_ClockConfig                      0x08003977   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_MCOConfig                        0x08003ae3   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_EnableCSS                        0x08003b23   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_DisableCSS                       0x08003b2b   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetHCLKFreq                      0x08003b33   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK1Freq                     0x08003b39   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK2Freq                     0x08003b4f   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetOscConfig                     0x08003b65   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetClockConfig                   0x08003c0d   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_CSSCallback                      0x08003c41   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_NMI_IRQHandler                   0x08003c43   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_GPIO_Init                            0x08003c95   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_DeInit                          0x08003ea1   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_ReadPin                         0x08003fe1   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_WritePin                        0x08003fef   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_TogglePin                       0x08003ffd   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_LockPin                         0x0800400d   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_Callback                   0x08004037   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_IRQHandler                 0x08004039   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
+    HAL_DMA_Init                             0x08004069   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_DeInit                           0x080040f9   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start                            0x080041af   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start_IT                         0x08004207   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort                            0x08004283   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort_IT                         0x080042cb   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_PollForTransfer                  0x08004409   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_IRQHandler                       0x0800492d   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_RegisterCallback                 0x08004bcd   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_UnRegisterCallback               0x08004c1d   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetState                         0x08004c73   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetError                         0x08004c79   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
+    HAL_NVIC_SetPriorityGrouping             0x08004cb1   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPriority                     0x08004ccf   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_EnableIRQ                       0x08004d31   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_DisableIRQ                      0x08004d4d   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SystemReset                     0x08004d71   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Config                       0x08004d8b   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriorityGrouping             0x08004daf   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriority                     0x08004db9   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPendingIRQ                   0x08004e17   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPendingIRQ                   0x08004e33   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_ClearPendingIRQ                 0x08004e5d   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetActive                       0x08004e79   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_CLKSourceConfig              0x08004ea3   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Callback                     0x08004ebf   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_IRQHandler                   0x08004ec1   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
+    HAL_UART_Init                            0x08004f99   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_Init                      0x08004ffd   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_Init                             0x0800506b   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_Init                  0x080050ed   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DeInit                          0x08005181   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit                        0x0800522d   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive                         0x080052f7   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_IT                     0x080053cb   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_IT                      0x0800540d   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_ErrorCallback                   0x08005463   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxHalfCpltCallback              0x080054dd   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxCpltCallback                  0x080054e9   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_DMA                    0x0800551b   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxHalfCpltCallback              0x080055a5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxCpltCallback                  0x080055b1   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_DMA                     0x080055f1   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAPause                        0x08005687   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAResume                       0x080056ed   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAStop                         0x0800574f   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort                           0x080057a7   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit                   0x0800583b   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive                    0x0800588b   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortCpltCallback               0x080058e5   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort_IT                        0x08005955   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmitCpltCallback       0x08005a07   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit_IT                0x08005a1d   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceiveCpltCallback        0x08005a7b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive_IT                 0x08005a91   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_IRQHandler                      0x08005c13   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_SendBreak                        0x08005d4b   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_EnterMuteMode         0x08005d91   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_ExitMuteMode          0x08005dc3   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableTransmitter         0x08005df5   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableReceiver            0x08005e2b   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetState                        0x08005e61   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetError                        0x08005e6d   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
+    __aeabi_memset                           0x08005e71   Thumb Code    14  memseta.o(.text)
+    __aeabi_memset4                          0x08005e71   Thumb Code     0  memseta.o(.text)
+    __aeabi_memset8                          0x08005e71   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr                           0x08005e7f   Thumb Code     4  memseta.o(.text)
+    __aeabi_memclr4                          0x08005e7f   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr8                          0x08005e7f   Thumb Code     0  memseta.o(.text)
+    _memset$wrapper                          0x08005e83   Thumb Code    18  memseta.o(.text)
+    __aeabi_uidiv                            0x08005e95   Thumb Code     0  uidiv.o(.text)
+    __aeabi_uidivmod                         0x08005e95   Thumb Code    44  uidiv.o(.text)
+    __scatterload                            0x08005ec1   Thumb Code    28  init.o(.text)
+    __scatterload_rt2                        0x08005ec1   Thumb Code     0  init.o(.text)
+    __0printf$3                              0x08005ee5   Thumb Code    22  printf3.o(i.__0printf$3)
+    __1printf$3                              0x08005ee5   Thumb Code     0  printf3.o(i.__0printf$3)
+    __2printf                                0x08005ee5   Thumb Code     0  printf3.o(i.__0printf$3)
+    __scatterload_copy                       0x08005f05   Thumb Code    14  handlers.o(i.__scatterload_copy)
+    __scatterload_null                       0x08005f13   Thumb Code     2  handlers.o(i.__scatterload_null)
+    __scatterload_zeroinit                   0x08005f15   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
+    free                                     0x080060dd   Thumb Code    76  malloc.o(i.free)
+    malloc                                   0x0800612d   Thumb Code    92  malloc.o(i.malloc)
+    gImage_2in36g                            0x08006198   Data       12432  imagedata2.o(.constdata)
+    Font12_Table                             0x08009228   Data        1140  font12.o(.constdata)
+    Font16_Table                             0x0800969c   Data        3040  font16.o(.constdata)
+    Font24CN_Table                           0x0800a27c   Data        4482  font24cn.o(.constdata)
+    AHBPrescTable                            0x0800b3fe   Data          16  system_stm32f1xx.o(.constdata)
+    APBPrescTable                            0x0800b40e   Data           8  system_stm32f1xx.o(.constdata)
+    Region$$Table$$Base                      0x0800b504   Number         0  anon$$obj.o(Region$$Table)
+    Region$$Table$$Limit                     0x0800b524   Number         0  anon$$obj.o(Region$$Table)
     Font12                                   0x20000000   Data           8  font12.o(.data)
     Font12                                   0x20000000   Data           8  font12.o(.data)
-    Font20                                   0x20000008   Data           8  font20.o(.data)
+    Font16                                   0x20000008   Data           8  font16.o(.data)
     Font24CN                                 0x20000010   Data          12  font24cn.o(.data)
     Font24CN                                 0x20000010   Data          12  font24cn.o(.data)
     SystemCoreClock                          0x2000001c   Data           4  system_stm32f1xx.o(.data)
     SystemCoreClock                          0x2000001c   Data           4  system_stm32f1xx.o(.data)
     uwTickFreq                               0x20000020   Data           1  stm32f1xx_hal.o(.data)
     uwTickFreq                               0x20000020   Data           1  stm32f1xx_hal.o(.data)
@@ -2389,22 +2417,22 @@ Memory Map of the image
 
 
   Image Entry point : 0x08000131
   Image Entry point : 0x08000131
 
 
-  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00013ebc, Max: 0x00080000, ABSOLUTE)
+  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000b55c, Max: 0x00080000, ABSOLUTE)
 
 
-    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00013e84, Max: 0x00080000, ABSOLUTE)
+    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000b524, Max: 0x00080000, ABSOLUTE)
 
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
 
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
-    0x08000130   0x08000130   0x00000000   Code   RO         3251  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
-    0x08000130   0x08000130   0x00000004   Code   RO         3551    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
-    0x08000134   0x08000134   0x00000004   Code   RO         3554    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3556    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3558    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
-    0x08000138   0x08000138   0x00000008   Code   RO         3559    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3561    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3563    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
-    0x08000140   0x08000140   0x00000004   Code   RO         3552    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
+    0x08000130   0x08000130   0x00000000   Code   RO         3303  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
+    0x08000130   0x08000130   0x00000004   Code   RO         3603    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
+    0x08000134   0x08000134   0x00000004   Code   RO         3606    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3608    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3610    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
+    0x08000138   0x08000138   0x00000008   Code   RO         3611    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3613    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3615    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
+    0x08000140   0x08000140   0x00000004   Code   RO         3604    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
     0x08000168   0x08000168   0x00000098   Code   RO           13    .text               main.o
     0x08000168   0x08000168   0x00000098   Code   RO           13    .text               main.o
     0x08000200   0x08000200   0x00000060   Code   RO          162    .text               gpio.o
     0x08000200   0x08000200   0x00000060   Code   RO          162    .text               gpio.o
@@ -2412,56 +2440,56 @@ Memory Map of the image
     0x0800031c   0x0800031c   0x000000d8   Code   RO          216    .text               usart.o
     0x0800031c   0x0800031c   0x000000d8   Code   RO          216    .text               usart.o
     0x080003f4   0x080003f4   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
     0x080003f4   0x080003f4   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
     0x08000424   0x08000424   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
     0x08000424   0x08000424   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
-    0x08000460   0x08000460   0x00000430   Code   RO         1514    .text               epd_4in37g_test.o
-    0x08000890   0x08000890   0x000002ec   Code   RO         2653    .text               epd_4in37g.o
-    0x08000b7c   0x08000b7c   0x00000068   Code   RO         2701    .text               dev_config.o
-    0x08000be4   0x08000be4   0x00000eac   Code   RO         2726    .text               gui_paint.o
-    0x08001a90   0x08001a90   0x000000c4   Code   RO         2860    .text               system_stm32f1xx.o
-    0x08001b54   0x08001b54   0x000015e8   Code   RO         2916    .text               stm32f1xx_hal_spi.o
-    0x0800313c   0x0800313c   0x00000188   Code   RO         2940    .text               stm32f1xx_hal.o
-    0x080032c4   0x080032c4   0x000008c8   Code   RO         2970    .text               stm32f1xx_hal_rcc.o
-    0x08003b8c   0x08003b8c   0x000003d4   Code   RO         3018    .text               stm32f1xx_hal_gpio.o
-    0x08003f60   0x08003f60   0x00000c48   Code   RO         3042    .text               stm32f1xx_hal_dma.o
-    0x08004ba8   0x08004ba8   0x00000224   Code   RO         3066    .text               stm32f1xx_hal_cortex.o
-    0x08004dcc   0x08004dcc   0x00000f9c   Code   RO         3230    .text               stm32f1xx_hal_uart.o
-    0x08005d68   0x08005d68   0x00000024   Code   RO         3258    .text               mc_w.l(memseta.o)
-    0x08005d8c   0x08005d8c   0x0000002c   Code   RO         3566    .text               mc_w.l(uidiv.o)
-    0x08005db8   0x08005db8   0x00000024   Code   RO         3583    .text               mc_w.l(init.o)
-    0x08005ddc   0x08005ddc   0x00000020   Code   RO         3351    i.__0printf$3       mc_w.l(printf3.o)
-    0x08005dfc   0x08005dfc   0x0000000e   Code   RO         3593    i.__scatterload_copy  mc_w.l(handlers.o)
-    0x08005e0a   0x08005e0a   0x00000002   Code   RO         3594    i.__scatterload_null  mc_w.l(handlers.o)
-    0x08005e0c   0x08005e0c   0x0000000e   Code   RO         3595    i.__scatterload_zeroinit  mc_w.l(handlers.o)
-    0x08005e1a   0x08005e1a   0x00000002   PAD
-    0x08005e1c   0x08005e1c   0x000001b8   Code   RO         3358    i._printf_core      mc_w.l(printf3.o)
-    0x08005fd4   0x08005fd4   0x00000050   Code   RO         3523    i.free              mc_w.l(malloc.o)
-    0x08006024   0x08006024   0x0000006c   Code   RO         3524    i.malloc            mc_w.l(malloc.o)
-    0x08006090   0x08006090   0x0000b800   Data   RO          356    .constdata          imagedata2.o
-    0x08011890   0x08011890   0x00000474   Data   RO         2773    .constdata          font12.o
-    0x08011d04   0x08011d04   0x00000ed8   Data   RO         2815    .constdata          font20.o
-    0x08012bdc   0x08012bdc   0x00001182   Data   RO         2843    .constdata          font24cn.o
-    0x08013d5e   0x08013d5e   0x00000010   Data   RO         2861    .constdata          system_stm32f1xx.o
-    0x08013d6e   0x08013d6e   0x00000008   Data   RO         2862    .constdata          system_stm32f1xx.o
-    0x08013d76   0x08013d76   0x00000002   PAD
-    0x08013d78   0x08013d78   0x000000e9   Data   RO         2728    .conststring        gui_paint.o
-    0x08013e61   0x08013e61   0x00000003   PAD
-    0x08013e64   0x08013e64   0x00000020   Data   RO         3591    Region$$Table       anon$$obj.o
+    0x08000460   0x08000460   0x00000550   Code   RO         1569    .text               epd_2in36g_test.o
+    0x080009b0   0x080009b0   0x000002d4   Code   RO         2729    .text               epd_2in36g.o
+    0x08000c84   0x08000c84   0x00000068   Code   RO         2753    .text               dev_config.o
+    0x08000cec   0x08000cec   0x00000eac   Code   RO         2778    .text               gui_paint.o
+    0x08001b98   0x08001b98   0x000000c4   Code   RO         2912    .text               system_stm32f1xx.o
+    0x08001c5c   0x08001c5c   0x000015e8   Code   RO         2968    .text               stm32f1xx_hal_spi.o
+    0x08003244   0x08003244   0x00000188   Code   RO         2992    .text               stm32f1xx_hal.o
+    0x080033cc   0x080033cc   0x000008c8   Code   RO         3022    .text               stm32f1xx_hal_rcc.o
+    0x08003c94   0x08003c94   0x000003d4   Code   RO         3070    .text               stm32f1xx_hal_gpio.o
+    0x08004068   0x08004068   0x00000c48   Code   RO         3094    .text               stm32f1xx_hal_dma.o
+    0x08004cb0   0x08004cb0   0x00000224   Code   RO         3118    .text               stm32f1xx_hal_cortex.o
+    0x08004ed4   0x08004ed4   0x00000f9c   Code   RO         3282    .text               stm32f1xx_hal_uart.o
+    0x08005e70   0x08005e70   0x00000024   Code   RO         3310    .text               mc_w.l(memseta.o)
+    0x08005e94   0x08005e94   0x0000002c   Code   RO         3618    .text               mc_w.l(uidiv.o)
+    0x08005ec0   0x08005ec0   0x00000024   Code   RO         3635    .text               mc_w.l(init.o)
+    0x08005ee4   0x08005ee4   0x00000020   Code   RO         3403    i.__0printf$3       mc_w.l(printf3.o)
+    0x08005f04   0x08005f04   0x0000000e   Code   RO         3645    i.__scatterload_copy  mc_w.l(handlers.o)
+    0x08005f12   0x08005f12   0x00000002   Code   RO         3646    i.__scatterload_null  mc_w.l(handlers.o)
+    0x08005f14   0x08005f14   0x0000000e   Code   RO         3647    i.__scatterload_zeroinit  mc_w.l(handlers.o)
+    0x08005f22   0x08005f22   0x00000002   PAD
+    0x08005f24   0x08005f24   0x000001b8   Code   RO         3410    i._printf_core      mc_w.l(printf3.o)
+    0x080060dc   0x080060dc   0x00000050   Code   RO         3575    i.free              mc_w.l(malloc.o)
+    0x0800612c   0x0800612c   0x0000006c   Code   RO         3576    i.malloc            mc_w.l(malloc.o)
+    0x08006198   0x08006198   0x00003090   Data   RO          354    .constdata          imagedata2.o
+    0x08009228   0x08009228   0x00000474   Data   RO         2825    .constdata          font12.o
+    0x0800969c   0x0800969c   0x00000be0   Data   RO         2853    .constdata          font16.o
+    0x0800a27c   0x0800a27c   0x00001182   Data   RO         2895    .constdata          font24cn.o
+    0x0800b3fe   0x0800b3fe   0x00000010   Data   RO         2913    .constdata          system_stm32f1xx.o
+    0x0800b40e   0x0800b40e   0x00000008   Data   RO         2914    .constdata          system_stm32f1xx.o
+    0x0800b416   0x0800b416   0x00000002   PAD
+    0x0800b418   0x0800b418   0x000000e9   Data   RO         2780    .conststring        gui_paint.o
+    0x0800b501   0x0800b501   0x00000003   PAD
+    0x0800b504   0x0800b504   0x00000020   Data   RO         3643    Region$$Table       anon$$obj.o
 
 
 
 
-    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08013e84, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE)
+    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800b524, Size: 0x0000d0e8, Max: 0x00010000, ABSOLUTE)
 
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
 
-    0x20000000   0x08013e84   0x00000008   Data   RW         2774    .data               font12.o
-    0x20000008   0x08013e8c   0x00000008   Data   RW         2816    .data               font20.o
-    0x20000010   0x08013e94   0x0000000c   Data   RW         2844    .data               font24cn.o
-    0x2000001c   0x08013ea0   0x00000004   Data   RW         2863    .data               system_stm32f1xx.o
-    0x20000020   0x08013ea4   0x0000000c   Data   RW         2941    .data               stm32f1xx_hal.o
-    0x2000002c   0x08013eb0   0x00000004   Data   RW         3565    .data               mc_w.l(stdout.o)
-    0x20000030   0x08013eb4   0x00000004   Data   RW         3570    .data               mc_w.l(mvars.o)
-    0x20000034   0x08013eb8   0x00000004   Data   RW         3571    .data               mc_w.l(mvars.o)
+    0x20000000   0x0800b524   0x00000008   Data   RW         2826    .data               font12.o
+    0x20000008   0x0800b52c   0x00000008   Data   RW         2854    .data               font16.o
+    0x20000010   0x0800b534   0x0000000c   Data   RW         2896    .data               font24cn.o
+    0x2000001c   0x0800b540   0x00000004   Data   RW         2915    .data               system_stm32f1xx.o
+    0x20000020   0x0800b544   0x0000000c   Data   RW         2993    .data               stm32f1xx_hal.o
+    0x2000002c   0x0800b550   0x00000004   Data   RW         3617    .data               mc_w.l(stdout.o)
+    0x20000030   0x0800b554   0x00000004   Data   RW         3622    .data               mc_w.l(mvars.o)
+    0x20000034   0x0800b558   0x00000004   Data   RW         3623    .data               mc_w.l(mvars.o)
     0x20000038        -       0x00000058   Zero   RW          187    .bss                spi.o
     0x20000038        -       0x00000058   Zero   RW          187    .bss                spi.o
     0x20000090        -       0x00000040   Zero   RW          217    .bss                usart.o
     0x20000090        -       0x00000040   Zero   RW          217    .bss                usart.o
-    0x200000d0        -       0x00000018   Zero   RW         2727    .bss                gui_paint.o
+    0x200000d0        -       0x00000018   Zero   RW         2779    .bss                gui_paint.o
     0x200000e8        -       0x0000c000   Zero   RW            2    HEAP                startup_stm32f103xe.o
     0x200000e8        -       0x0000c000   Zero   RW            2    HEAP                startup_stm32f103xe.o
     0x2000c0e8        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
     0x2000c0e8        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
 
 
@@ -2473,32 +2501,32 @@ Image component sizes
 
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
 
 
-       104         10          0          0          0        780   dev_config.o
-       748         60          0          0          0       2703   epd_4in37g.o
-      1072        384          0          0          0       1478   epd_4in37g_test.o
-         0          0       1140          8          0       1353   font12.o
-         0          0       3800          8          0       1353   font20.o
-         0          0       4482         12          0       1363   font24cn.o
-        96         10          0          0          0        803   gpio.o
-      3756        662        233          0         24      14608   gui_paint.o
-         0          0      47104          0          0        842   imagedata2.o
-       152         20          0          0          0     461928   main.o
-       188         18          0          0         88       1429   spi.o
-        36          8        304          0      53248        796   startup_stm32f103xe.o
-       392         38          0         12          0       7649   stm32f1xx_hal.o
-       548         12          0          0          0      30674   stm32f1xx_hal_cortex.o
-      3144        164          0          0          0       7109   stm32f1xx_hal_dma.o
-       980         30          0          0          0       4391   stm32f1xx_hal_gpio.o
-        60          8          0          0          0        826   stm32f1xx_hal_msp.o
-      2248         88          0          0          0       6559   stm32f1xx_hal_rcc.o
-      5608        106          0          0          0      19625   stm32f1xx_hal_spi.o
-      3996         46          0          0          0      17432   stm32f1xx_hal_uart.o
-        48         22          0          0          0       1246   stm32f1xx_it.o
-       196         28         24          4          0       1509   system_stm32f1xx.o
-       216         18          0          0         64       1753   usart.o
+       104         10          0          0          0        792   dev_config.o
+       724         60          0          0          0       2711   epd_2in36g.o
+      1360        394          0          0          0       1718   epd_2in36g_test.o
+         0          0       1140          8          0       1389   font12.o
+         0          0       3040          8          0       1389   font16.o
+         0          0       4482         12          0       1391   font24cn.o
+        96         10          0          0          0        827   gpio.o
+      3756        662        233          0         24      14644   gui_paint.o
+         0          0      12432          0          0        920   imagedata2.o
+       152         20          0          0          0     462020   main.o
+       188         18          0          0         88       1473   spi.o
+        36          8        304          0      53248        804   startup_stm32f103xe.o
+       392         38          0         12          0       7697   stm32f1xx_hal.o
+       548         12          0          0          0      30706   stm32f1xx_hal_cortex.o
+      3144        164          0          0          0       7133   stm32f1xx_hal_dma.o
+       980         30          0          0          0       4415   stm32f1xx_hal_gpio.o
+        60          8          0          0          0        854   stm32f1xx_hal_msp.o
+      2248         88          0          0          0       6583   stm32f1xx_hal_rcc.o
+      5608        106          0          0          0      19649   stm32f1xx_hal_spi.o
+      3996         46          0          0          0      17460   stm32f1xx_hal_uart.o
+        48         22          0          0          0       1258   stm32f1xx_it.o
+       196         28         24          4          0       1553   system_stm32f1xx.o
+       216         18          0          0         64       1777   usart.o
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
-     23588       1732      57124         44      53424     588209   Object Totals
+     23852       1742      21692         44      53424     589163   Object Totals
          0          0         32          0          0          0   (incl. Generated)
          0          0         32          0          0          0   (incl. Generated)
          0          0          5          0          0          0   (incl. Padding)
          0          0          5          0          0          0   (incl. Padding)
 
 
@@ -2543,15 +2571,15 @@ Image component sizes
 
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
 
 
-     24416       1782      57124         56      53424     587089   Grand Totals
-     24416       1782      57124         56      53424     587089   ELF Image Totals
-     24416       1782      57124         56          0          0   ROM Totals
+     24680       1792      21692         56      53424     588043   Grand Totals
+     24680       1792      21692         56      53424     588043   ELF Image Totals
+     24680       1792      21692         56          0          0   ROM Totals
 
 
 ==============================================================================
 ==============================================================================
 
 
-    Total RO  Size (Code + RO Data)                81540 (  79.63kB)
+    Total RO  Size (Code + RO Data)                46372 (  45.29kB)
     Total RW  Size (RW Data + ZI Data)             53480 (  52.23kB)
     Total RW  Size (RW Data + ZI Data)             53480 (  52.23kB)
-    Total ROM Size (Code + RO Data + RW Data)      81596 (  79.68kB)
+    Total ROM Size (Code + RO Data + RW Data)      46428 (  45.34kB)
 
 
 ==============================================================================
 ==============================================================================
 
 

+ 5 - 5
STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst

@@ -580,17 +580,17 @@ ARM Macro Assembler    Page 9
               00000000 
               00000000 
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
 ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
 ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
-.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I
-nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl
-ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" -
+.\RTE\_epd-demo -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include -ID:
+\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICR
+OLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE_ SETA 1
 
 
 
 
 
 
 ARM Macro Assembler    Page 10 
 ARM Macro Assembler    Page 10 
 
 
 
 
--predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3
-2f103xe.lst startup_stm32f103xe.s
+" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst startup_stm3
+2f103xe.s
 
 
 
 
 
 

+ 1 - 0
STM32/STM32-F103ZET6/Src/main.c

@@ -95,6 +95,7 @@ int main(void)
   /* USER CODE BEGIN 2 */
   /* USER CODE BEGIN 2 */
 
 
   // EPD_1in64g_test();
   // EPD_1in64g_test();
+	// EPD_2in36g_test();
   // EPD_3in0g_test();
   // EPD_3in0g_test();
   // EPD_4in37g_test();
   // EPD_4in37g_test();
   // EPD_7in3g_test();
   // EPD_7in3g_test();

+ 154 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_2in36g_test.c

@@ -0,0 +1,154 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g_test.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G) test demo
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-18
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_Test.h"
+#include "EPD_2in36g.h"
+#include "time.h"
+
+int EPD_2in36g_test(void)
+{
+    printf("EPD_2IN36G_test Demo\r\n");
+    if(DEV_Module_Init()!=0){
+        return -1;
+    }
+
+    printf("e-Paper Init and Clear...\r\n");
+    EPD_2IN36G_Init();
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE); // White
+    DEV_Delay_ms(2000);
+
+    //Create a new image cache
+    UBYTE *BlackImage;
+    /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
+    UWORD Imagesize = ((EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1)) * EPD_2IN36G_HEIGHT;
+    if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
+        printf("Failed to apply for black memory...\r\n");
+        return -1;
+    }
+    printf("Paint_NewImage\r\n");
+    Paint_NewImage(BlackImage, EPD_2IN36G_WIDTH, EPD_2IN36G_HEIGHT, 0, WHITE);
+    Paint_SetScale(4);
+
+#if 1   // show bmp
+    printf("show window BMP-----------------\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_DrawBitMap(gImage_2in36g);
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(2000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawPoint(10, 80, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 90, EPD_2IN36G_WHITE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
+    Paint_DrawPoint(10, 100, EPD_2IN36G_RED, DOT_PIXEL_3X3, DOT_STYLE_DFT);
+    Paint_DrawLine(20, 70, 70, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawLine(70, 70, 20, 120, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
+    Paint_DrawRectangle(20, 70, 70, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawRectangle(80, 70, 130, 120, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawCircle(45, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
+    Paint_DrawCircle(105, 95, 20, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawLine(85, 95, 125, 95, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawLine(105, 75, 105, 115, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
+    Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_2IN36G_BLACK, EPD_2IN36G_WHITE);
+    Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_2IN36G_WHITE, EPD_2IN36G_RED);
+    Paint_DrawString_CN(10, 125, "΢ѩ����", &Font24CN, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+    Paint_DrawNum(10, 50, 123456, &Font12, EPD_2IN36G_BLACK, EPD_2IN36G_YELLOW);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+    Paint_DrawRectangle(1, 1, 168, 86, EPD_2IN36G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(1, 210, 167, 295, EPD_2IN36G_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+    Paint_DrawRectangle(59, 1, 109, 295, EPD_2IN36G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
+
+    printf("EPD_Display\r\n");
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+#if 1   // Drawing on the image
+    //1.Select Image
+    printf("SelectImage:BlackImage\r\n");
+    Paint_SelectImage(BlackImage);
+    Paint_Clear(EPD_2IN36G_WHITE);
+
+    int hNumber, hWidth, vNumber, vWidth;
+    hNumber = 16;
+	hWidth = EPD_2IN36G_HEIGHT/hNumber; // 368/16=23
+    vNumber = 16;
+	vWidth = EPD_2IN36G_WIDTH/vNumber; // 512/16=32
+
+    // 2.Drawing on the image
+    printf("Drawing:BlackImage\r\n");
+	for(int i=0; i<hNumber; i++) {  // horizontal
+		Paint_DrawRectangle(1, 1+i*hWidth, EPD_2IN36G_WIDTH, hWidth*(1+i), EPD_2IN36G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+	}
+	for(int i=0; i<vNumber; i++) {  // vertical
+        if(i%2) {
+            Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_2IN36G_HEIGHT, EPD_2IN36G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
+        }
+	}
+
+    printf("EPD_Display\r\n");  
+    EPD_2IN36G_Display(BlackImage);
+    DEV_Delay_ms(3000);
+#endif
+
+    printf("Clear...\r\n");
+    EPD_2IN36G_Clear(EPD_2IN36G_WHITE);
+
+    printf("Goto Sleep...\r\n");
+    EPD_2IN36G_Sleep();
+    free(BlackImage);
+    BlackImage = NULL;
+    DEV_Delay_ms(2000);//important, at least 2s
+    // close 5V
+    printf("close 5V, Module enters 0 power consumption ...\r\n");
+    DEV_Module_Exit();
+    
+    return 0;
+}
+

+ 1 - 1
STM32/STM32-F103ZET6/User/Examples/EPD_4in37g_test.c

@@ -58,7 +58,7 @@ int EPD_4in37g_test(void)
     printf("show image for array\r\n");
     printf("show image for array\r\n");
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
     Paint_Clear(EPD_4IN37G_WHITE);
     Paint_Clear(EPD_4IN37G_WHITE);
-    Paint_DrawBitMap(Image4color);
+    Paint_DrawBitMap(gImage_4in37g);
     EPD_4IN37G_Display(BlackImage);
     EPD_4IN37G_Display(BlackImage);
     DEV_Delay_ms(2000);
     DEV_Delay_ms(2000);
 #endif
 #endif

+ 1 - 0
STM32/STM32-F103ZET6/User/Examples/EPD_Test.h

@@ -37,6 +37,7 @@
 #include <stdlib.h> // malloc() free()
 #include <stdlib.h> // malloc() free()
 
 
 int EPD_1in64g_test(void);
 int EPD_1in64g_test(void);
+int EPD_2in36g_test(void);
 int EPD_3in0g_test(void);
 int EPD_3in0g_test(void);
 int EPD_4in37g_test(void);
 int EPD_4in37g_test(void);
 int EPD_7in3g_test(void);
 int EPD_7in3g_test(void);

+ 2 - 1
STM32/STM32-F103ZET6/User/Examples/ImageData.h

@@ -38,8 +38,9 @@ extern const unsigned char gImage_2in13b_V4b[];
 extern const unsigned char gImage_2in13b_V4r[];
 extern const unsigned char gImage_2in13b_V4r[];
 
 
 extern const unsigned char gImage_1in64g[];
 extern const unsigned char gImage_1in64g[];
+extern const unsigned char gImage_2in36g[];
 extern const unsigned char gImage_3in0g[];
 extern const unsigned char gImage_3in0g[];
-extern const unsigned char Image4color[];
+extern const unsigned char gImage_4in37g[];
 extern const unsigned char gImage_7in3g[];
 extern const unsigned char gImage_7in3g[];
 /* --------------------------------------- */
 /* --------------------------------------- */
 
 

+ 781 - 1
STM32/STM32-F103ZET6/User/Examples/ImageData2.c

@@ -982,6 +982,786 @@ const unsigned char gImage_1in64g[7056] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 };
 };
 
 
+const unsigned char gImage_2in36g[12432] = {
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x41,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFE,0xAA,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFA,0xAF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xEA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAA,0xBA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x05,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,
+0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xFF,0xAA,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBE,0xAB,0xFE,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xEA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,
+0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,
+0xFF,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x04,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,
+0xAB,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x05,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xBF,0xAB,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xAB,0xFA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x40,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x54,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEF,0xFF,0xFF,0xFF,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x01,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,
+0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x14,0x04,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x05,
+0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xFF,0xEA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x01,0x54,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xBF,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x54,0x05,0x40,0x15,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEB,0xFF,0xFF,0xFE,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x54,0x01,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x14,0x00,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x50,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x51,0x55,0x40,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA,
+0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAB,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x05,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAF,0xEA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x01,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,
+0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xBF,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,
+0x40,0x15,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xFF,0xEA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x00,0x05,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x01,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x05,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x10,0x05,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x01,0x50,0x05,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xBF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x50,0x05,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x04,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,
+0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFE,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,
+0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,
+0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xEA,0xAA,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xAA,0xAA,0xAA,0xAF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,
+0xEA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAF,0xFA,0xAA,0xAA,0xAA,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xBF,0xFE,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAB,0xFF,0xFF,0xEA,
+0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x15,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x15,0x55,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x54,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x50,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x55,0x15,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x15,0x55,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x54,
+0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x00,0x15,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x51,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x00,0x15,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x05,0x50,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x01,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x40,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x45,0x40,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,
+0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x40,
+0x05,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x50,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x05,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x40,0x15,0x00,0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF,
+0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAB,0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA,
+0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x51,0x55,0x50,0x00,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x15,0x50,
+0x05,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,
+0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x50,0x05,0x55,0x40,0x15,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x50,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x10,0x05,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x40,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,
+0xFF,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x15,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x54,0x01,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xBF,0xFF,0xFA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xFF,0xFF,0xFE,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x00,0x05,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x01,0x55,0x00,0x00,0x01,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x54,
+0x00,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x15,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x14,0x01,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x00,0x04,0x01,0x55,0x00,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x05,0x55,
+0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x04,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x00,0x05,0x55,0x40,0x15,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x40,0x01,0x55,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x50,0x15,0x54,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAB,0xFF,0xFF,0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x54,
+0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xFF,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x55,0x54,0x01,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xEA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x50,0x05,0x55,0x55,0x54,0x05,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAA,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xBF,0xAA,0xAF,0xFF,
+0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xEA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xEA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x05,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x40,0x00,
+0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x00,0x05,0x55,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x00,0x01,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x00,0x00,0x00,0x55,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x54,0x00,0x15,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,
+0x05,0x55,0x00,0x05,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,
+0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,0x40,0x01,0x00,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,
+0x55,0x55,0x55,0x50,0x05,0x55,0x54,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x05,0x55,
+0x55,0x00,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0x01,0x55,0x55,0x40,0x00,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x54,0x00,0x15,0x55,0x50,0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAB,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x54,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x00,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xAA,0xAA,
+0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x50,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,
+0x50,0x55,0x55,0x55,0x40,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,
+0xFF,0xFF,0xEA,0xAF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x54,0x00,0x14,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x00,0x01,0x55,0x45,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAB,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,
+0xEA,0xAB,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xEA,0xAA,0xFF,0xFE,0xAA,0xAF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAF,0xEA,0xAA,0xAF,
+0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,
+0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xAA,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,
+0xAF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,
+0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x54,0x04,0x15,0x55,0x55,0x55,0x55,
+0x55,0x5F,0xFF,0xFF,0x55,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x55,0x54,0x05,0x45,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55,0x5F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,
+0xF5,0x55,0x5D,0x55,0x5F,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,
+0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x57,0xFF,
+0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0x5F,0xFF,0xD5,0x55,0xFF,0xF5,0x55,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFE,0xAA,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xF5,0x55,
+0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x41,0x55,
+0x05,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,0xAA,0xBF,0xFF,0xFF,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFA,0xAA,0xAA,0xAA,0xAF,0xFF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x55,0x05,0x55,0x55,0x55,0x55,0x55,0xFD,0x55,0x5F,0xFF,0x55,0x5F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAA,0xAA,0xFF,
+0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x01,0x54,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0x55,0x57,0xFF,0xF5,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAA,0xAA,0xBF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xD5,
+0x55,0x5F,0xFD,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,
+0xAA,0xAA,0xAA,0xAF,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xF5,0x55,0x57,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAA,0xFF,0xEA,0xAA,0xAB,0xFF,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFD,0xF5,0x55,0x5F,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xAA,0xAB,0xFF,0xFE,0xAA,0xAA,0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0x55,
+0x55,0x7F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,
+0xAA,0xAA,0xBF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x50,0x05,
+0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xEA,0xAA,0xAF,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x04,0x05,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xFF,0xF5,0x55,0x5F,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xAA,0xAF,0xFF,0xFF,0xFA,0xAA,0xAB,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x01,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0x7F,
+0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA,
+0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x57,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xAA,0xAF,0xFF,0xFF,0xFF,0xEA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x05,0x05,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xD5,0x55,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xAB,
+0xFF,0xFF,0xFF,0xFA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x01,0x04,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0xFF,0xFF,0xFF,0xFF,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAA,0xFF,0xFF,0xFF,0xFE,0xAA,0xAA,
+0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x40,0x00,0x05,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xFD,0x55,0x55,0xFF,0xFF,0xFF,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xEA,0xAA,0xAF,0xFF,0xFF,0xFF,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x55,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF5,
+0x55,0x5F,0xFF,0xFD,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xEA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xF1,0x55,0x5F,0xFF,0xFD,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAF,0xFF,0xFF,0xFF,0xFA,0xAA,0xAB,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x45,0x55,0x55,0x55,0x55,0x55,
+0xFF,0xFF,0xF5,0x55,0x55,0x5F,0xFF,0xF5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFE,0xAA,0xAF,0xFF,0xFF,0xFF,0xFE,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x50,0x00,0x54,0x05,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x55,0xFF,
+0xFF,0xD5,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAA,0xBF,0xFF,0xFF,0xFF,
+0xFF,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x10,0x05,0x55,
+0x55,0x55,0x55,0x55,0xFF,0xFF,0xD5,0x55,0x7F,0xFF,0xFF,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xFF,0xFF,0xEA,0xAB,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x40,0x50,0x00,0x15,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,
+0xD5,0x5F,0xFF,0xFF,0xFD,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41,
+0x54,0x01,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xD7,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55,
+0x55,0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xD5,0x55,0x55,0x41,0x54,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xD5,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,
+0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,
+0x55,0x40,0x00,0x00,0x05,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,
+0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+0x55,0x55,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+};
+
 const unsigned char gImage_3in0g[16800] = {
 const unsigned char gImage_3in0g[16800] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD5,0x55,0x55,0x55,0x55,
@@ -8039,7 +8819,7 @@ const unsigned char gImage_7in3g[96000] = {
 };
 };
 
 
 // 4 Color Image Data 512*368 
 // 4 Color Image Data 512*368 
-const unsigned char Image4color[47104] = {
+const unsigned char gImage_4in37g[47104] = {
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,

+ 238 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.c

@@ -0,0 +1,238 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.c
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in36g.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(20);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN36G_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN36G_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_ReadBusyH(void)
+{
+    Debug("e-Paper busy H\r\n");
+    while(!DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy H release\r\n");
+}
+static void EPD_2IN36G_ReadBusyL(void)
+{
+    Debug("e-Paper busy L\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN)) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(5);
+    }
+    Debug("e-Paper busy L release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN36G_TurnOnDisplay(void)
+{
+    EPD_2IN36G_SendCommand(0x12); // DISPLAY_REFRESH
+    EPD_2IN36G_SendData(0x01);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_ReadBusyH();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Init(void)
+{
+    EPD_2IN36G_Reset();
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+    EPD_2IN36G_SendData(0x13);
+    EPD_2IN36G_SendData(0x5D);
+
+    EPD_2IN36G_SendCommand(0x66);
+    EPD_2IN36G_SendData(0x49);
+    EPD_2IN36G_SendData(0x55);
+
+    EPD_2IN36G_SendCommand(0xB0);
+    EPD_2IN36G_SendData(0x03);//1 boost 20211113
+
+    EPD_2IN36G_SendCommand(0x00);
+    EPD_2IN36G_SendData(0x4F);
+    EPD_2IN36G_SendData(0x69);
+
+    EPD_2IN36G_SendCommand(0x03);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0xF0);
+    EPD_2IN36G_SendData(0xF6);
+    EPD_2IN36G_SendData(0x0D);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x06); //20211113
+    EPD_2IN36G_SendData(0xCF);
+    EPD_2IN36G_SendData(0xDE);
+    EPD_2IN36G_SendData(0x0F);
+
+    EPD_2IN36G_SendCommand(0x41);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_SendCommand(0x50);
+    EPD_2IN36G_SendData(0x30);
+
+    EPD_2IN36G_SendCommand(0x60);
+    EPD_2IN36G_SendData(0x0C); 
+    EPD_2IN36G_SendData(0x05);
+
+    EPD_2IN36G_SendCommand(0x61);
+    EPD_2IN36G_SendData(0xA8);
+    EPD_2IN36G_SendData(0x01); 
+    EPD_2IN36G_SendData(0x28); 
+
+    EPD_2IN36G_SendCommand(0x84);
+    EPD_2IN36G_SendData(0x01);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Clear(UBYTE color)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+                EPD_2IN36G_SendData((color << 6) | (color << 4) | (color << 2) | color);
+        }
+    }
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN36G_WIDTH % 4 == 0)? (EPD_2IN36G_WIDTH / 4 ): (EPD_2IN36G_WIDTH / 4 + 1);
+    Height = EPD_2IN36G_HEIGHT;
+
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x01);
+    
+    EPD_2IN36G_SendCommand(0x04);
+    EPD_2IN36G_ReadBusyH();
+
+    EPD_2IN36G_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN36G_SendData(Image[i + j * Width]);
+        }
+    }
+		
+    EPD_2IN36G_SendCommand(0x68);
+    EPD_2IN36G_SendData(0x00);
+		
+    EPD_2IN36G_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN36G_Sleep(void)
+{
+    EPD_2IN36G_SendCommand(0x02); // POWER_OFF
+    EPD_2IN36G_SendData(0X00);
+    EPD_2IN36G_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN36G_SendData(0XA5);
+}
+

+ 51 - 0
STM32/STM32-F103ZET6/User/e-Paper/EPD_2in36g.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:   EPD_2in36g.h
+* | Author      :   Waveshare team
+* | Function    :   2.36inch e-Paper (G)
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2022-08-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN36G_H_
+#define __EPD_2IN36G_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN36G_WIDTH       168
+#define EPD_2IN36G_HEIGHT      296
+
+// Color
+#define EPD_2IN36G_BLACK		0x0
+#define EPD_2IN36G_WHITE		0x1
+#define EPD_2IN36G_YELLOW		0x2
+#define EPD_2IN36G_RED			0x3
+
+void EPD_2IN36G_Init(void);
+void EPD_2IN36G_Clear(UBYTE color);
+void EPD_2IN36G_Display(UBYTE *Image);
+void EPD_2IN36G_Sleep(void);
+
+#endif

+ 2 - 1
Version_CN.txt

@@ -31,4 +31,5 @@
 2022-07-22:添加新程序3inch e-Paper (G)例程。
 2022-07-22:添加新程序3inch e-Paper (G)例程。
 2022-07-22:添加新程序7.3inch e-Paper (G)例程。
 2022-07-22:添加新程序7.3inch e-Paper (G)例程。
 2022-07-22:添加新程序3.52inch e-Paper例程。
 2022-07-22:添加新程序3.52inch e-Paper例程。
-2022-08-16:添加新程序4.37inch e-Paper (G)例程。
+2022-08-16:添加新程序4.37inch e-Paper (G)例程。
+2022-08-17:添加新程序2.36inch e-Paper (G)例程。

+ 2 - 1
Version_EN.txt

@@ -30,4 +30,5 @@
 2022-07-22: Added new programs 3inch e-Paper (G) routine.
 2022-07-22: Added new programs 3inch e-Paper (G) routine.
 2022-07-22: Added new programs 7.3inch e-Paper (G) routine.
 2022-07-22: Added new programs 7.3inch e-Paper (G) routine.
 2022-07-22: Added new programs 3.52inch e-Paper routine.
 2022-07-22: Added new programs 3.52inch e-Paper routine.
-2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
+2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
+2022-08-17: Added new programs 2.36inch e-Paper (G) routine.

Some files were not shown because too many files changed in this diff