STM32 + RT Thread OS 学习笔记[三]

RTGUI

据说RTGUI是多线程的,因此与RT-Thread OS的耦合度较高,有可能要访问RT-Thread的线程控制块。如果要移植到其它OS,估计难度较大。目前还处于Alpha状态,最终将会包含进RT-Thread中,成为其中的标准组件。

1、  RTGUI下载

当前,要获取包含RTGUI的源码,需要到SVN库里去拉。

因此,需要先安装SVN客户端。比较简单的就是命令行,当然你也可以其它选择。

这里使用Apache Subversion command line tools,下载地址:http://www.visualsvn.com/downloads/

 

下载文件是一个压缩包,解压到任意目录即可。

 

RT-Thread SVN源码浏览

 

打开cmd窗口,进入上面解压缩目录,运行下面的命令:

svn checkout http://rt-thread.googlecode.com/svn/tags/rtt_1_1_1\mcu\rtt111

这样就把rtt_1_1_1这个版本下载到根目录下的 mcu\rtt111中。

 


注1:由于众所周知的原因,从googlecode下载有点困难,建议使用VPN等方式。

注2:下载的bsp目录,实际只需要simulator(模拟器)和stm32f10x(奋斗板V3对应),其它的都可以删除或转移到其它目录。

2、  项目生成

与之前一样,修改rtconfig.h,打开RT_USING_RTGUI选项;

 

运行命令:scons –target=mdk4 –s

打开生成的项目文件,可以看到已经包含了RTGUI。

3、  LCD驱动(SSD1963)

a)      这是重新下载的源码,所以对LED的定义,还需要按之前章节所述,修改相应代码。

b)      编译

在驱动未完成前,examples和calibration.c(由文件名看应该是触摸屏校准程序)都可以不要。从项目中移除(remove)组gui_examples以及文件calibration.c,重新编译,成功。

c)      驱动代码

默认状态下,包含了ssd1289这个驱动文件,我们要参照它来写一个ssd1963的驱动。

代码:

ssd1963.c

#include <rtthread.h>
#include "stm32f10x.h"
 
// 分辨率(H:0-479 V:0-271)
unsigned int  HDP=479;
unsigned int  VDP=271;
 
unsigned int  HT=531;
unsigned int  HPS=43;
unsigned int  LPS=8;
unsigned char HPW=1;
 
unsigned int  VT=288;
unsigned int  VPS=12;
unsigned int  FPS=4;
unsigned char VPW=10;
 
#define Bank1_LCD_D    ((uint32_t)0x60020000)    //disp Data ram
#define Bank1_LCD_C    ((uint32_t)0x60000000)     //disp Reg ram
 
void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
 
void LCD_WR_REG(u16 index)
{
*(__IO uint16_t *) (Bank1_LCD_C)= index;
}
 
u16 LCD_RD_DAT(void)
{
u16 a=0;
a=*(__IO uint16_t *) (Bank1_LCD_D);
return(a);
}
 
void LCD_WR_DAT(u16 val)
{  
*(__IO uint16_t *) (Bank1_LCD_D)= val;      
}
 
void _set_window(u16 x1, u16 y1, u16 x2, u16 y2)
{
LCD_WR_REG(0x002A);
         LCD_WR_DAT(x1>>8);      
         LCD_WR_DAT(x1&0x00ff);
         LCD_WR_DAT(x2>>8);
         LCD_WR_DAT(x2&0x00ff);
         LCD_WR_REG(0x002b);
         LCD_WR_DAT(y1>>8);
         LCD_WR_DAT(y1&0x00ff);
         LCD_WR_DAT(y2>>8);
         LCD_WR_DAT(y2&0x00ff);
}
 
void _set_cursor(u16 x,u16 y)
{
_set_window(x, y, HDP, VDP);
}
 
void lcd_set_pixel(const char* pixel, int x, int y)
{
_set_cursor(x, y);
LCD_WR_REG(0x2c);
LCD_WR_DAT(*(rt_uint16_t*)pixel);
}
 
void lcd_get_pixel(char* pixel, int x, int y)
{
_set_cursor(x, y);
LCD_WR_REG(0x2e);
*(rt_uint16_t*)pixel = LCD_RD_DAT();
}
 
void lcd_draw_hline(const char* pixel, int x1, int x2, int y)
{
_set_cursor(x1, y);
LCD_WR_REG(0x2c);
    while (x1 < x2)
    {
        LCD_WR_DAT(*(rt_uint16_t*)pixel);
        x1++;
    }
}
 
void lcd_draw_vline(const char* pixel, int x, int y1, int y2)
{
_set_window(x, y1, x, y2);
LCD_WR_REG(0x2c);
    while (y1 < y2)
    {
        LCD_WR_DAT(*(rt_uint16_t*)pixel);
        y1++;
    }
}
 
void lcd_blit_line(const char* pixels, int x, int y, rt_size_t size)
{
rt_uint16_t *ptr;
ptr = (rt_uint16_t*)pixels;
 
_set_cursor(x, y);
LCD_WR_REG(0x2c);
    while (size)
    {
        LCD_WR_DAT(*ptr ++);
           size --;
    }
}
 
void lcd_clear()
{                   
    int w = HDP + 1, h = VDP + 1;
_set_cursor(0, 0);
LCD_WR_REG(0x2c);
    while (w--)
    {
        while(h--)
        {
            LCD_WR_DAT(0xffff);
        }
           h = VDP + 1;
    }
}
 
void LCD_INIT(void)
{
GPIO_ResetBits(GPIOE, GPIO_Pin_1);
    Delay(0xAFFFF);                                         
    GPIO_SetBits(GPIOE, GPIO_Pin_1 );                          
Delay(0xAFFFF);
 
    LCD_WR_REG(0x00E2);                 // PLL=10*36/3=120M
LCD_WR_DAT(0x0023);          //N=0x36 for 6.5M, 0x23 for 10M crystal
LCD_WR_DAT(0x0002);
LCD_WR_DAT(0x0004);
LCD_WR_REG(0x00E0);        
LCD_WR_DAT(0x0001);
Delay(0xAFFF);
LCD_WR_REG(0x00E0);
LCD_WR_DAT(0x0003);              
Delay(0xAFFF);
LCD_WR_REG(0x0001);      
Delay(0xAFFF);
LCD_WR_REG(0x00E6);              //PLL setting for PCLK, depends on resolution
LCD_WR_DAT(0x0001);
LCD_WR_DAT(0x0033);
LCD_WR_DAT(0x0032);
 
LCD_WR_REG(0x00B0);              //module
LCD_WR_DAT(0x0000);
LCD_WR_DAT(0x0000);
LCD_WR_DAT((HDP>>8)&0X00FF);  //Set HDP
LCD_WR_DAT(HDP&0X00FF);
    LCD_WR_DAT((VDP>>8)&0X00FF);  //Set VDP
LCD_WR_DAT(VDP&0X00FF);
    LCD_WR_DAT(0x0000);
 
LCD_WR_REG(0x00B4);      //HSYNC
LCD_WR_DAT((HT>>8)&0X00FF);  //Set HT
LCD_WR_DAT(HT&0X00FF);
LCD_WR_DAT((HPS>>8)&0X00FF);  //Set HPS
LCD_WR_DAT(HPS&0X00FF);
LCD_WR_DAT(HPW);                       //Set HPW
LCD_WR_DAT((LPS>>8)&0X00FF);  //Set HPS
LCD_WR_DAT(LPS&0X00FF);
LCD_WR_DAT(0x0000);
 
LCD_WR_REG(0x00B6);      //VSYNC
LCD_WR_DAT((VT>>8)&0X00FF);   //Set VT
LCD_WR_DAT(VT&0X00FF);
LCD_WR_DAT((VPS>>8)&0X00FF);  //Set VPS
LCD_WR_DAT(VPS&0X00FF);
LCD_WR_DAT(VPW);                       //Set VPW
LCD_WR_DAT((FPS>>8)&0X00FF);  //Set FPS
LCD_WR_DAT(FPS&0X00FF);
 
LCD_WR_REG(0x00BA);
LCD_WR_DAT(0x000F);    //GPIO[3:0] out 1
 
LCD_WR_REG(0x00B8);
LCD_WR_DAT(0x0007);    //GPIO3=input, GPIO[2:0]=output
LCD_WR_DAT(0x0001);    //GPIO0 normal
 
LCD_WR_REG(0x0036);            //rotation
LCD_WR_DAT(0x0000);
 
LCD_WR_REG(0x00F0);             //16位  565 color module
LCD_WR_DAT(0x0003);
 
Delay(0xAFFF);
 
LCD_WR_REG(0x0029); //display on
 
LCD_WR_REG(0x00BE); //set PWM for B/L
LCD_WR_DAT(0x0006);
LCD_WR_DAT(0x0080);
LCD_WR_DAT(0x0001);
LCD_WR_DAT(0x00f0);
LCD_WR_DAT(0x0000);
LCD_WR_DAT(0x0000);
 
LCD_WR_REG(0x00d0);// backlight
LCD_WR_DAT(0x000d);
}
 
void GPIO_INIT(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
                                                       | RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE| RCC_APB2Periph_GPIOF , ENABLE);
}
 
void FSMC_LCD_Init(void)
{
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;
  GPIO_InitTypeDef  GPIO_InitStructure;
 
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);       
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                               
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                    
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  
  GPIO_Init(GPIOD, &GPIO_InitStructure);   
  GPIO_SetBits(GPIOD, GPIO_Pin_13);                                  
 
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;               
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  
  GPIO_Init(GPIOE, &GPIO_InitStructure); 
 
        
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
                                GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
                                GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
                                GPIO_Pin_15;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
 
 
 
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
  p.FSMC_AddressSetupTime = 0x02;
  p.FSMC_AddressHoldTime = 0x00;
  p.FSMC_DataSetupTime = 0x05;
  p.FSMC_BusTurnAroundDuration = 0x00;
  p.FSMC_CLKDivision = 0x00;
  p.FSMC_DataLatency = 0x00;
  p.FSMC_AccessMode = FSMC_AccessMode_B;
 
  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
 
  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
 
 
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 
}
 
 
struct rt_device_graphic_ops ssd1963_ops =
{
lcd_set_pixel,
lcd_get_pixel,
lcd_draw_hline,
lcd_draw_vline,
lcd_blit_line
};
 
struct rt_device _lcd_device;
static rt_err_t lcd_init(rt_device_t dev)
{
return RT_EOK;
}
 
static rt_err_t lcd_open(rt_device_t dev, rt_uint16_t oflag)
{
return RT_EOK;
}
 
static rt_err_t lcd_close(rt_device_t dev)
{
return RT_EOK;
}
 
static rt_err_t lcd_control(rt_device_t dev, rt_uint8_t cmd, void *args)
{
switch (cmd)
{
case RTGRAPHIC_CTRL_GET_INFO:
           {
                    struct rt_device_graphic_info *info;
 
                    info = (struct rt_device_graphic_info*) args;
                    RT_ASSERT(info != RT_NULL);
 
                    info->bits_per_pixel = 16;
                    info->pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565P;
                    info->framebuffer = RT_NULL;
                    info->width = HDP + 1;
                    info->height = VDP + 1;
           }
           break;
 
case RTGRAPHIC_CTRL_RECT_UPDATE:
           /* nothong to be done */
           break;
 
default:
           break;
}
 
return RT_EOK;
}
 
void rt_hw_lcd_init(void)
{
 
/* register lcd device */
_lcd_device.type  = RT_Device_Class_Graphic;
_lcd_device.init  = lcd_init;
_lcd_device.open  = lcd_open;
_lcd_device.close = lcd_close;
_lcd_device.control = lcd_control;
_lcd_device.read  = RT_NULL;
_lcd_device.write = RT_NULL;
 
_lcd_device.user_data = &ssd1963_ops;
    GPIO_INIT();
    FSMC_LCD_Init();
    LCD_INIT();
    lcd_clear();
 
    /* register graphic device driver */
rt_device_register(&_lcd_device, "lcd",
           RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
}

这个文件中,直接被调用的只有一个函数:void rt_hw_lcd_init(void),执行完成后,在系统中注册了名为“lcd”的设备。

   _lcd_device.type  = RT_Device_Class_Graphic;
   _lcd_device.init  = lcd_init;
   _lcd_device.open  = lcd_open;
   _lcd_device.close = lcd_close;
   _lcd_device.control = lcd_control;
   _lcd_device.read  = RT_NULL;
   _lcd_device.write = RT_NULL;

这些是一个标准设备必须的函数,作为LCD显示设备,这里只有control是有用的,其它实际上是个空函数。

 

struct rt_device_graphic_ops ssd1963_ops =
{
         lcd_set_pixel,
         lcd_get_pixel,
         lcd_draw_hline,
         lcd_draw_vline,
         lcd_blit_line
};
 
void rt_hw_lcd_init(void)
{
 
         …………
 
         _lcd_device.user_data = &ssd1963_ops;
…………

与显示设备相关的,主要是这五个画图相关函数。

 

d)      测试程序

测试程序分两个,一个是底层硬件画图函数测试,一个是RTGUI API测试。

lcd_hw_test.c

#include <rtthread.h>
 
extern const unsigned char* icon;
 
void lcd_hw_test(){
    char pixel[] = {0x00, 0xf8};
    int width, height = 59, i=5;
    unsigned char* p;
    char tmp[] = {0xff, 0xff};
 
    rt_device_t drv = rt_device_find("lcd");
    struct rt_device_graphic_ops* ops = ((struct rt_device_graphic_ops *)(drv->user_data));
 
    // hline
    while(i--)
    {
        ops->draw_hline(pixel, 0, 480, 50 + i);
    }
 
    // vline
    i = 5;
    while(i--)
    {
        ops->draw_vline(pixel, 80 + i, 0, 272);
    }
 
    // draw icon
    p = (unsigned char*)&icon;
    while(height--){
        ops->blit_line((char*)p, 200, 180 - height, 59);
        p += 59 * 2;
    }
   
    // copy icon
    width = height = 59;
    while(height--)
    {
        while(width--)
        {
            ops->get_pixel(tmp, 200 + width, 180 - height);
            ops->set_pixel(tmp, 290 + width,  180 - height);
        }
        width = 59;
    }
}

 lcd_gui_test.c
#include <rtthread.h>
 
#ifdef RT_USING_RTGUI
#include <rtgui/rtgui.h>
#include <rtgui/rtgui_server.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/driver.h>
#endif
 
const unsigned char icon[] = {0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF7,0XFE,0XD6,
0XFE,0XDE,0X3F,0XE7,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X3F,0XE7,0XFE,0XDE,0XFE,0XD6,0X9F,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
0XFE,0XD6,0X1E,0XDF,0XBE,0XD6,0X7E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X7E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X7E,0XC6,0XBE,0XD6,0X1E,0XDF,
0XFE,0XDE,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XBE,0XF7,0XDE,0XD6,0XBE,0XCE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5E,0XBE,0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,
0X7E,0XC6,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5E,0XC6,0XDE,0XD6,0XFE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0XBD,0XCE,0X7E,0XC6,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,0X7E,0XBE,0X7E,0XBE,
0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,
0X7E,0XBE,0X7E,0XBE,0X5E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,
0X3E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X5E,0XBE,0X5E,0XBE,0XBE,0XCE,
0XDE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XDD,0XD6,0X7E,0XC6,
0X1D,0XB6,0X1D,0XB6,0X3E,0XBE,0X3E,0XBE,0X5E,0XBE,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,
0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,
0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X3E,0XBE,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,0X1D,0XB6,0X5E,0XBE,0X3D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X9E,0XC6,0XFD,0XD6,0XDF,0XFF,0XFF,0XFF,0XDF,0XFF,
0X5D,0XEF,0X7E,0XC6,0X1E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X5E,0XB6,0X5E,0XB6,0X3E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X1D,0XB6,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X1D,0XB6,0XBE,0XC6,
0X5D,0XEF,0XDF,0XFF,0XBE,0XF7,0X9C,0XCE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XBD,0XAD,0XFD,0XB5,
0X1D,0XAE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0XFD,0XB5,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0X3E,0XB6,0XBD,0XCE,0XBE,0XF7,0X5D,0XEF,0X3D,0XBE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,
0XBD,0XA5,0X5C,0X9D,0XDE,0XD6,0XDD,0XA5,0X1D,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,
0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
0XBD,0XAD,0XBD,0XAD,0XDD,0XAD,0XFD,0XAD,0X1E,0XAE,0X1E,0XAE,0X1D,0XB6,0X5D,0XEF,
0XFB,0XDE,0XDD,0XAD,0XFD,0XAD,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0XFD,0XAD,0XFD,0XAD,0XFD,0XAD,0XBC,0XA5,0X1B,0X95,0XDF,0XFF,0X7C,0X95,0XFD,0XA5,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0XFD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0X9D,0XA5,0X9C,0XA5,
0X9C,0XA5,0X3A,0XA5,0X9D,0XA5,0X9D,0XA5,0XBD,0XA5,0XBD,0XA5,0XDD,0XAD,0XFD,0XAD,
0X1D,0XAE,0XDD,0XAD,0XFB,0XDE,0XBA,0XD6,0XFD,0XAD,0XDD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XBC,0X9D,0X7B,0XA5,
0XFF,0XFF,0XDC,0XA5,0XBC,0X9D,0XFD,0XA5,0XDD,0XA5,0X9D,0XA5,0X9D,0X9D,0X9D,0X9D,
0XFD,0XA5,0XBD,0XA5,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X7D,0X9D,
0X7C,0X9D,0X7C,0X9D,0X1A,0XA5,0X8F,0XB3,0X5C,0X9D,0X7C,0X9D,0X7D,0X9D,0X9D,0X9D,
0X9D,0X9D,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0XA5,0XBA,0XD6,0X79,0XCE,0X9D,0X9D,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0X9D,0X9D,0X9D,0XBD,0XA5,0XDD,0XA5,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
0XDD,0XA5,0X7C,0X95,0X3C,0XB6,0XFF,0XFF,0X3C,0XB6,0X7C,0X95,0XDD,0XA5,0X9D,0X9D,
0XBD,0X9D,0X5C,0X9D,0X7D,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,
0X5C,0X9D,0X5C,0X95,0X5C,0X95,0X3B,0X95,0X75,0XA4,0X67,0XBA,0XB8,0X94,0X3B,0X95,
0X5C,0X95,0X5C,0X95,0X5C,0X9D,0X5C,0X9D,0X7D,0X9D,0X7D,0X9D,0X9D,0X9D,0X9D,0X9D,
0X79,0XCE,0X59,0XCE,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X5D,0X95,
0X3C,0X95,0X3C,0X95,0X5D,0X95,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X1B,0X8D,0XBD,0XCE,0XFF,0XFF,0XBD,0XCE,
0X1B,0X8D,0X9D,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X5C,0X95,0X3C,0X95,0X3C,0X95,
0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X8D,0XFB,0X8C,0XB0,0XB3,0XC2,0XC9,
0XF4,0X8B,0XDA,0X84,0X1B,0X8D,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,
0X7D,0X95,0XBD,0X9D,0XBD,0X9D,0X59,0XCE,0X38,0XC6,0X5D,0X95,0X7D,0X95,0X9D,0X95,
0X5D,0X95,0X3C,0X95,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X3C,0X95,
0X7D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,
0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X7C,0X95,0XDA,0X84,
0X5E,0XE7,0XFF,0XFF,0X5E,0XE7,0XDA,0X84,0X7C,0X95,0X7D,0X95,0X3C,0X8D,0X3C,0X8D,
0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0XFB,0X8C,0XB9,0X84,
0XEA,0XCA,0XA1,0XC9,0X2E,0X93,0X79,0X7C,0XDA,0X84,0XFC,0X8C,0X1C,0X8D,0X1C,0X8D,
0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X38,0XC6,0X38,0XC6,
0XFC,0X84,0X1C,0X8D,0X5D,0X8D,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0X3C,0X8D,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X5C,0X8D,0XBA,0X7C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBA,0X7C,0X5C,0X8D,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XDB,0X84,0X36,0X8C,0X65,0XE2,0XA1,0XC9,0X69,0X9A,0X37,0X74,0X79,0X7C,0XDB,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X38,0XC6,0X38,0XC6,0XFC,0X84,0X1C,0X85,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X1C,0X85,
0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,
0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X5D,0X8D,0X3C,0X85,0X3A,0X8D,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X1A,0X8D,0XBB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XDC,0X84,0XDB,0X7C,0XBA,0X7C,0XB2,0X9B,0X23,0XF2,0XA1,0XC9,0XE5,0XA9,0XD5,0X6B,
0X58,0X74,0X9A,0X7C,0XDB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0X1C,0X85,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X38,0XC6,0X38,0XC6,0XDC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XDC,0X7C,0X3D,0X85,0X5D,0X8D,0X5D,0X8D,0X5D,0X85,0X5D,0X8D,
0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5C,0X85,0XFB,0X7C,
0XDB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9B,0XA5,0X5A,0X6C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0X9B,0X7C,0X7A,0X74,0X0D,0XB3,0X01,0XFA,0XA1,0XC9,
0XA2,0XB9,0X52,0X6B,0XF7,0X6B,0X7A,0X74,0XBB,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XFC,0X84,0X3C,0X85,0XFC,0X84,0X3C,0X85,0X5D,0X8D,0X38,0XC6,
0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0X3D,0X85,
0X3C,0X85,0XFC,0X7C,0XBC,0X74,0X1C,0X7D,0X3C,0X85,0X3D,0X85,0X3D,0X85,0X3D,0X85,
0X3C,0X85,0X1C,0X7D,0X9A,0X74,0X7C,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5C,0XC6,
0X19,0X64,0X7B,0X74,0X9C,0X74,0X9C,0X74,0X9B,0X74,0X7B,0X74,0X18,0X74,0X87,0XD2,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XCE,0X72,0XB6,0X5B,0X39,0X6C,0X7B,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0XFC,0X7C,0X1C,0X85,
0X3D,0X85,0X3D,0X85,0X38,0XC6,0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0XBC,0X74,0X3D,0X7D,0X1C,0X7D,0X9B,0X6C,0X9E,0XC6,0X1C,0X85,0XDC,0X74,
0X1C,0X7D,0X1C,0X7D,0XFC,0X74,0XBB,0X6C,0X1B,0X85,0X3C,0XB6,0XBF,0XF7,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XBF,0XF7,0XDC,0XAD,0X7A,0X74,0X1A,0X64,0X3A,0X64,0X5A,0X6C,
0XB4,0X83,0X44,0XEA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X4A,0X82,0X96,0X5B,0X18,0X64,
0X5A,0X6C,0X9B,0X6C,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0XBC,0X74,0XBC,0X74,0X1C,0X7D,0X3D,0X7D,0X3D,0X7D,0X38,0XC6,0X38,0XC6,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X6C,0X1C,0X7D,0X1C,0X7D,0XDC,0X74,
0XFB,0X7C,0XDF,0XFF,0X1D,0XAE,0X7B,0X6C,0X9B,0X6C,0X1B,0X85,0X5E,0XE7,0XFF,0XFF,
0XFF,0XFF,0XBD,0XCE,0X3C,0XBE,0X3B,0XBE,0X3B,0XBE,0X9D,0XCE,0XFF,0XFF,0XFF,0XFF,
0XFD,0XDE,0X79,0X7C,0X0F,0X93,0X02,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XE6,0X99,
0X55,0X53,0XD8,0X5B,0X3A,0X64,0X5B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X74,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,
0X38,0XC6,0X38,0XC6,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,
0X1C,0X75,0XFC,0X74,0XFC,0X74,0X7A,0X64,0XFC,0XAD,0XFF,0XFF,0X3E,0XDF,0X5D,0XBE,
0XFF,0XFF,0X7E,0XEF,0X7B,0X95,0X18,0X64,0X18,0X5C,0X18,0X5C,0X18,0X5C,0XB7,0X53,
0X77,0X4B,0X97,0X53,0XF9,0X8C,0XBC,0XD6,0X0C,0XEC,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
0X81,0XB9,0XA3,0XA9,0X12,0X53,0XB7,0X53,0X1A,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,0X1C,0X75,
0X1C,0X75,0X1C,0X75,0X1C,0X75,0X38,0XC6,0X38,0XC6,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X5C,0X5B,0X64,0XDC,0X74,0XFC,0X74,0XFC,0X6C,0XBB,0X6C,0X18,0X5C,
0X1E,0XDF,0XFF,0XFF,0XFF,0XFF,0XFC,0XAD,0X18,0X5C,0X59,0X5C,0X7A,0X64,0X5A,0X64,
0X3A,0X64,0X5A,0X64,0X9A,0X6C,0XF9,0X53,0XD8,0X53,0X33,0X5B,0X25,0XD2,0X01,0XFA,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0XAF,0X5A,0X76,0X4B,0XF9,0X5B,0X3B,0X5C,
0X3B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X64,0XDC,0X6C,0XFC,0X74,0XFC,0X74,0XFC,0X74,0X38,0XC6,0X38,0XC6,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X5B,0X5C,0XFC,0X6C,
0XDC,0X6C,0XBB,0X6C,0X39,0X5C,0X3C,0XB6,0XFF,0XFF,0X5A,0X95,0X18,0X5C,0X7A,0X64,
0X3A,0X5C,0X3B,0X5C,0X1B,0X5C,0X1B,0X5C,0X1B,0X5C,0XBB,0X6C,0XFA,0X5B,0X32,0X7B,
0X23,0XF2,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X2B,0X6A,0X55,0X43,
0XD9,0X53,0X1A,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X7C,0X64,0XDC,0X6C,0XFC,0X6C,
0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X7C,0X5C,0XDC,0X6C,0X9B,0X64,0XDA,0X74,0XFF,0XFF,0X1C,0XAE,
0X18,0X54,0X9A,0X64,0X3B,0X5C,0X1B,0X54,0X1B,0X54,0X3B,0X54,0X1B,0X54,0X1B,0X54,
0XFA,0X53,0XED,0X9A,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,
0X09,0XB3,0X94,0X5B,0X77,0X43,0XFA,0X53,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X5C,0X5C,0XDC,0X6C,0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X5A,0X2B,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X5C,0X3A,0X5C,
0X3E,0XDF,0X7E,0XE7,0XF8,0X53,0X7A,0X5C,0XBB,0X64,0X3B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0XFA,0X4B,0XB8,0X53,0X88,0XC2,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
0X81,0XB9,0X81,0XB9,0XA4,0X99,0X56,0XAD,0X3A,0XC6,0X58,0X3B,0XFB,0X53,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X54,0X1B,0X44,0X38,0XC6,
0X38,0XC6,0XFA,0X1A,0X5A,0X2B,0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0XDA,0X43,0XDB,0X74,0XFF,0XFF,0X3A,0X8D,0X39,0X54,0XBB,0X64,0XDC,0X64,
0X7C,0X5C,0X1B,0X4C,0XFB,0X4B,0XFA,0X4B,0X75,0X6B,0X24,0XE2,0X01,0XFA,0X01,0XFA,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X82,0XB1,0X6F,0X3A,0X16,0X6C,0X7D,0XEF,
0X79,0X6C,0XDA,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0XFB,0X43,
0X5A,0X2B,0XFA,0X1A,0X38,0XC6,0X38,0XC6,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X9B,0X33,
0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0XFB,0X4B,0XFB,0X43,0XBA,0X43,0X79,0X3B,0XFC,0XAD,0XDF,0XFF,0X98,0X43,
0X5A,0X54,0XDC,0X64,0XDC,0X64,0XBC,0X5C,0XFB,0X4B,0XDA,0X43,0X71,0X8B,0X22,0XF2,
0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X81,0XB9,0X6E,0X52,
0X15,0X33,0X15,0X3B,0X9E,0XF7,0XFC,0XAD,0X79,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X4B,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0XFB,0X43,0X9B,0X33,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X38,0XC6,0X38,0XC6,0X3A,0X1B,
0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X23,0X7B,0X2B,0XDB,0X3B,0X1B,0X44,0XFB,0X43,
0XFB,0X43,0XBA,0X43,0XBA,0X3B,0X9A,0X3B,0X79,0X3B,0X5A,0X5C,0X3B,0X85,0X1C,0XAE,
0XDF,0XF7,0XBD,0XCE,0X58,0X3B,0XFA,0X43,0XDC,0X5C,0XDC,0X64,0XDC,0X64,0X3A,0X4C,
0X3A,0X85,0X17,0XEE,0X06,0X7A,0X07,0X42,0X06,0X7A,0XA2,0XB9,0X81,0XB9,0X81,0XB9,
0X81,0XB9,0X2A,0X72,0X15,0X33,0X77,0X3B,0X37,0X33,0X9D,0XC6,0XDF,0XF7,0X1C,0XAE,
0X3B,0X85,0X5A,0X5C,0X79,0X3B,0X9A,0X3B,0XBA,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X43,
0X1B,0X44,0XDB,0X3B,0X7B,0X2B,0X3A,0X23,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,
0X38,0XC6,0X38,0XC6,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,
0X3A,0X1B,0XF9,0X1A,0X19,0X23,0X1A,0X54,0X3B,0X85,0X1D,0XAE,0X1E,0XD7,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0XAE,0X78,0X3B,0XFB,0X43,0X7C,0X54,
0XDC,0X5C,0XBB,0X5C,0XFA,0X74,0XDF,0XF7,0X10,0X84,0X55,0XAD,0XFF,0XFF,0X55,0XAD,
0X48,0X6A,0X81,0XB9,0X81,0XB9,0XE6,0X91,0X75,0X43,0X18,0X4C,0X5A,0X54,0XF9,0X4B,
0X3C,0XB6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1E,0XD7,0X1D,0XAE,
0X3B,0X85,0X1A,0X54,0X19,0X23,0XF9,0X1A,0X3A,0X1B,0X5A,0X23,0X5A,0X23,0X5A,0X23,
0X5A,0X23,0X5A,0X23,0X5A,0X23,0X38,0XC6,0X38,0XC6,0X7B,0X23,0X7B,0X23,0X7B,0X23,
0X7B,0X23,0X7B,0X23,0X5A,0X1B,0XDA,0X43,0XFD,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBB,0X9D,
0X99,0X33,0XFB,0X3B,0X1B,0X3C,0X1B,0X44,0X19,0X4C,0X5E,0XE7,0XFF,0XFF,0XAE,0X73,
0XBA,0XD6,0XDB,0XDE,0XBA,0XD6,0X6D,0X73,0X81,0XB9,0XA3,0XA9,0X73,0X4B,0X38,0X4C,
0XBA,0X54,0XDB,0X5C,0X5A,0X4C,0XFB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XA5,0XFA,0X4B,
0X5A,0X1B,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X38,0XC6,0X38,0XC6,
0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7A,0X23,0X5A,0X23,0XF9,0X1A,
0XD7,0X1A,0XD8,0X43,0XDA,0X74,0XDB,0X9D,0XFD,0XCE,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,
0XFF,0XF7,0XFF,0XF7,0XFC,0XA5,0X39,0X2B,0XDB,0X33,0XDB,0X33,0XB9,0X33,0X7D,0XBE,
0XFF,0XFF,0XFF,0XFF,0X75,0XAD,0XD3,0X9C,0X34,0XA5,0XD3,0X9C,0XCE,0X9B,0X82,0XB9,
0XF0,0X4A,0X17,0X4C,0X9A,0X54,0XBC,0X54,0XBC,0X54,0X3A,0X44,0X3C,0XAE,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFD,0XCE,0XDB,0X9D,0XDA,0X74,0XD8,0X43,
0XD7,0X1A,0XF9,0X1A,0X5A,0X1B,0X7A,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,
0X7B,0X23,0X38,0XC6,0X38,0XC6,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,
0X9B,0X23,0X9A,0X23,0X7A,0X23,0X79,0X23,0X39,0X1B,0X18,0X1B,0XD7,0X1A,0XB6,0X1A,
0X95,0X1A,0XB7,0X43,0XB9,0X74,0XDB,0X9D,0XBF,0XEF,0X9D,0XBE,0X18,0X1B,0X7A,0X23,
0X59,0X23,0X5B,0X8D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X59,0XCE,0X96,0XB5,0X75,0XAD,
0X96,0XB5,0XF2,0XBC,0X4D,0X52,0X16,0X23,0X39,0X3C,0X7B,0X44,0X9C,0X44,0X9C,0X44,
0XFA,0X3B,0XDD,0XC6,0XDF,0XF7,0X3B,0XAE,0X39,0X85,0X58,0X5C,0X15,0X2B,0X36,0X2B,
0X97,0X2B,0X98,0X2B,0XB9,0X2B,0X99,0X23,0X7A,0X23,0X9A,0X23,0X9B,0X23,0X9B,0X23,
0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X38,0XC6,0X38,0XC6,0XBB,0X23,0XBB,0X23,
0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X9A,0X23,0X9A,0X23,
0X9A,0X23,0X79,0X23,0X79,0X23,0X79,0X23,0X38,0X1B,0X17,0X1B,0XD6,0X1A,0XDB,0X9D,
0XDF,0XEF,0X18,0X23,0X79,0X23,0X7A,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD7,0XB5,0XB4,0X53,0XF5,0X1A,0X58,0X23,0X9B,0X44,
0XBC,0X44,0XBC,0X4C,0X9B,0X44,0X19,0X3C,0XDF,0XFF,0X3C,0XAE,0XB7,0X33,0XF8,0X3B,
0X39,0X3C,0X5A,0X44,0X7A,0X44,0X7A,0X44,0X7B,0X44,0X9B,0X44,0X9B,0X44,0XBB,0X23,
0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X38,0XC6,
0X38,0XC6,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XBB,0X23,0XBA,0X23,0XBA,0X23,
0X9A,0X23,0X58,0X23,0X39,0X54,0XFF,0XF7,0X9A,0X64,0XB8,0X33,0X9F,0XEF,0XFF,0XFF,
0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0X76,0XA5,0X33,0X33,0XF5,0X1A,
0X58,0X23,0X1A,0X34,0XDC,0X4C,0XDC,0X4C,0XDC,0X4C,0X7B,0X44,0X7B,0X7D,0XFF,0XFF,
0XFA,0X6C,0X59,0X44,0X9B,0X44,0XBB,0X4C,0XBB,0X4C,0XBC,0X4C,0XDC,0X4C,0XDC,0X4C,
0XDC,0X4C,0XDC,0X4C,0XFB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
0XDB,0X23,0XDB,0X23,0X38,0XC6,0X38,0XC6,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XDA,0X23,0X38,0X1B,0XFD,0XCE,0XBC,0XCE,
0XDD,0XCE,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD5,0X8C,
0XF3,0X22,0X36,0X1B,0X98,0X23,0XDA,0X23,0X9C,0X3C,0XFC,0X4C,0XFC,0X4C,0XDC,0X4C,
0X7A,0X44,0X7E,0XE7,0X3E,0XDF,0X19,0X3C,0XDB,0X4C,0XFC,0X4C,0XFC,0X4C,0XFC,0X4C,
0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0XDC,0X44,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0X38,0XC6,0X38,0XC6,0X1C,0X24,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1B,0X24,0XFB,0X23,
0X99,0X23,0X58,0X54,0X7D,0XEF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,
0XF7,0XBD,0X34,0X64,0XF4,0X1A,0X57,0X23,0XB9,0X23,0XFA,0X23,0X1B,0X24,0X9C,0X3C,
0X3D,0X55,0X1C,0X4D,0XBB,0X44,0X3C,0XA6,0XFF,0XFF,0XFA,0X64,0X9A,0X44,0XFC,0X4C,
0X1C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X9C,0X3C,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
0X38,0XC6,0X38,0XC6,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X1B,0X24,0XD9,0X23,0XF9,0X74,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0XF7,0XBD,0XB7,0XB5,0X94,0X43,0X35,0X1B,0X97,0X23,0XDA,0X23,0X1B,0X2C,
0X3C,0X2C,0X3C,0X2C,0X5C,0X2C,0X1C,0X4D,0XDB,0X4C,0XBC,0X85,0XFF,0XFF,0X5C,0XAE,
0X79,0X44,0X1B,0X4D,0X3C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,
0X3D,0X55,0X3D,0X55,0X1C,0X45,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X38,0XC6,0X38,0XC6,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X1B,0X2C,0X99,0X4C,0XDF,0XF7,
0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X36,0X9D,0X33,0X2B,0X76,0X23,0XD8,0X23,
0X1A,0X2C,0X5B,0X2C,0X5C,0X2C,0X7C,0X2C,0X5C,0X2C,0X1B,0X24,0X3A,0X2C,0X5D,0XA6,
0XFF,0XFF,0XFF,0XFF,0X3E,0XD7,0X99,0X44,0X3C,0X55,0X7C,0X55,0X7D,0X55,0X7D,0X55,
0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X5D,0X55,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X38,0XC6,0X38,0XC6,
0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X5B,0X2C,
0X5A,0X34,0X7E,0XE7,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X96,0XB5,0X56,0XA5,
0X56,0X5C,0X98,0X23,0XFA,0X23,0X1B,0X24,0X3B,0X24,0X1B,0X24,0X1B,0X24,0X1A,0X2C,
0X5C,0X6D,0X7F,0XE7,0XFF,0XFF,0X7C,0XAE,0X3E,0XD7,0XFF,0XFF,0X3C,0X9E,0X1C,0X4D,
0X9D,0X5D,0X9D,0X5D,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,
0X7D,0X55,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
0X7C,0X2C,0X38,0XC6,0X38,0XC6,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X7C,0X2C,0X5A,0X2C,0XDD,0XC6,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XD7,0XBD,
0XD3,0X53,0X73,0X3B,0XF9,0XAD,0X5D,0XE7,0X9E,0XEF,0XBD,0XBE,0X5D,0XA6,0X3D,0XA6,
0X5D,0XA6,0XDE,0XBE,0XDF,0XF7,0XFF,0XFF,0X3E,0XD7,0X79,0X4C,0X58,0X34,0X78,0X44,
0X3C,0X9E,0XDF,0XF7,0X7B,0X65,0X9C,0X55,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,
0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0X9D,0X4D,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X38,0XC6,0X38,0XC6,0XBD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBC,0X2C,0XBC,0X2C,0X7B,0X2C,0XFC,0X95,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0X97,0XAD,0XB3,0X3B,0X74,0X23,0XB6,0X23,0XB7,0X23,0X58,0X44,0XDB,0X8D,
0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XEF,0XFC,0X95,0X99,0X4C,0XF9,0X23,
0X39,0X2C,0X7A,0X2C,0X7A,0X34,0X79,0X2C,0X7B,0X6D,0XDD,0XB6,0X5C,0X55,0XDD,0X5D,
0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0X7D,0X45,0XDD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0X38,0XC6,
0X38,0XC6,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
0XDD,0X2C,0XDD,0X2C,0XDD,0X34,0XDD,0X34,0XFD,0X34,0XDC,0X34,0XBB,0X2C,0X5B,0X65,
0XDF,0XFF,0X79,0XCE,0XF7,0XBD,0X36,0X95,0X94,0X2B,0XF7,0X2B,0X59,0X2C,0X9A,0X2C,
0X9A,0X34,0X7A,0X2C,0X19,0X2C,0X5C,0XAE,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0X5C,0XAE,
0X19,0X2C,0X7A,0X2C,0XBB,0X34,0XBC,0X34,0XDC,0X34,0XDC,0X34,0XBB,0X34,0X9C,0X5D,
0X5B,0X55,0XBC,0X5D,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XDD,0X5D,
0XDD,0X34,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
0XDD,0X2C,0XDD,0X2C,0X38,0XC6,0X38,0XC6,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0XDC,0X34,0XFA,0X4C,0X9E,0XEF,0X79,0XCE,0XF7,0XBD,0X95,0X74,0XB5,0X23,0X38,0X2C,
0X9A,0X34,0XDC,0X34,0XFC,0X34,0XFC,0X34,0XFC,0X34,0X7A,0X2C,0X9B,0X7D,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9B,0X7D,0X7A,0X2C,0XFC,0X34,0X1C,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0XDD,0X55,0XFD,0X65,0X1D,0X66,0X1D,0X66,0X1D,0X66,0X1D,0X66,
0X1D,0X66,0X1D,0X66,0X1D,0X5E,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X38,0XC6,0X38,0XC6,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X1C,0X35,0XDB,0X34,0X3E,0XD7,0X79,0XCE,0XD7,0XB5,0X35,0X54,
0XF6,0X2B,0X79,0X2C,0XFB,0X34,0X3C,0X35,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X3D,0X3D,
0XFB,0X34,0XFA,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFA,0X54,0XFB,0X34,0X3D,0X3D,
0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0XFD,0X4D,0X3D,0X6E,0X3D,0X6E,
0X3D,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X1D,0X56,0X3D,0X35,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
0X38,0XC6,0X38,0XC6,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X3D,0X35,0XFB,0X34,0X9D,0XAE,0X79,0XCE,
0X97,0XA5,0X15,0X3C,0X37,0X2C,0XB9,0X34,0X1B,0X35,0X5D,0X3D,0X7D,0X3D,0X7D,0X3D,
0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X3C,0X3D,0X99,0X34,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X99,0X34,0X3C,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,
0XBD,0X45,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X5E,0X6E,
0X3E,0X56,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
0X5D,0X35,0X5D,0X35,0X5D,0X35,0X38,0XC6,0X38,0XC6,0X7D,0X35,0X7D,0X35,0X7D,0X35,
0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X5D,0X35,0X3C,0X35,
0X1C,0X86,0X79,0XCE,0X57,0X8D,0X36,0X34,0X98,0X34,0XFA,0X34,0X5C,0X3D,0X9D,0X3D,
0X9D,0X3D,0X9E,0X3D,0X9E,0X45,0XBE,0X45,0XBE,0X45,0X9D,0X45,0X7D,0X3D,0XDA,0X34,
0X3E,0XD7,0XFF,0XFF,0X3E,0XD7,0XDA,0X34,0X7D,0X3D,0X9D,0X45,0XBE,0X45,0XBE,0X45,
0X9E,0X45,0X9E,0X3D,0X9E,0X3D,0X9E,0X3D,0X7E,0X66,0X9E,0X76,0X9E,0X76,0X9E,0X76,
0X9E,0X76,0X9E,0X76,0X7E,0X6E,0XDE,0X45,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,
0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X38,0XC6,0X38,0XC6,
0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
0X9D,0X3D,0X7D,0X35,0XBC,0X65,0X59,0XC6,0X17,0X6D,0X77,0X2C,0XD9,0X34,0X3B,0X3D,
0X9D,0X3D,0XBD,0X3D,0XBE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,
0XDE,0X45,0XBD,0X45,0X3B,0X3D,0XBD,0XAE,0XFF,0XFF,0XBD,0XAE,0X3B,0X3D,0XBD,0X45,
0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0X7E,0X56,
0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XFE,0X45,0XBE,0X3D,0X9E,0X3D,
0X9E,0X3D,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
0X9E,0X35,0X38,0XC6,0X38,0XC6,0XBE,0X35,0XBE,0X35,0XBE,0X35,0XBE,0X3D,0XBE,0X3D,
0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBD,0X3D,0X9C,0X4D,0X39,0XAE,0X18,0X55,0XD9,0X34,
0X1A,0X35,0X7C,0X3D,0XBD,0X3D,0XDE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,
0XFE,0X45,0XFE,0X45,0X1E,0X4E,0X1E,0X4E,0XFD,0X45,0X7C,0X3D,0X3C,0X8E,0XFF,0XFF,
0X3C,0X8E,0X7C,0X3D,0XFD,0X45,0X1E,0X4E,0X1E,0X4E,0XFE,0X45,0XFE,0X45,0XFE,0X45,
0XFE,0X45,0XFE,0X45,0X7E,0X56,0XDE,0X7E,0XDE,0X7E,0XDE,0X76,0XDE,0X76,0XDE,0X76,
0X7E,0X56,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,
0XBE,0X3D,0XBE,0X35,0XBE,0X35,0XBE,0X35,0X38,0XC6,0X38,0XC6,0XBD,0X3D,0XDE,0X35,
0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBD,0X3D,0XFA,0X85,
0X5A,0X45,0X3A,0X35,0X5B,0X3D,0XBC,0X3D,0XFD,0X45,0X1E,0X46,0X1E,0X46,0X1E,0X46,
0X1E,0X46,0X1E,0X46,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
0XDC,0X45,0XDB,0X5D,0XFF,0XFF,0XDB,0X65,0XDC,0X45,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X1E,0X46,0X1E,0X46,0XBE,0X5E,0XFE,0X7E,0XFE,0X7E,
0XFE,0X7E,0XFE,0X7E,0X9E,0X56,0X1E,0X46,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X35,0XBD,0X3D,0X38,0XC6,
0X38,0XC6,0XBC,0X4D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XFE,0X3D,0XDD,0X4D,0XBC,0X3D,0X9C,0X3D,0XBC,0X3D,0XDD,0X45,0X1E,0X46,0X3E,0X46,
0X3E,0X46,0X3E,0X4E,0X3E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X56,
0X7E,0X56,0X7E,0X56,0X5E,0X4E,0X3D,0X4E,0X9B,0X45,0XDF,0XF7,0X9B,0X45,0X3D,0X4E,
0X5E,0X4E,0X7E,0X56,0X7E,0X56,0X5E,0X56,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,
0X9E,0X56,0X1E,0X87,0X1E,0X87,0X1E,0X87,0XFE,0X6E,0X1E,0X46,0X1E,0X46,0X1E,0X46,
0X1E,0X46,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XFE,0X3D,0XBC,0X45,0X38,0XC6,0X59,0XCE,0X79,0X5D,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,
0X1E,0X3E,0X1E,0X3E,0X1E,0X46,0X1E,0X3E,0X1E,0X46,0XFD,0X3D,0X1D,0X46,0X1E,0X46,
0X3E,0X46,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,
0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X7E,0X56,0XFC,0X4D,
0X1E,0XB7,0XFC,0X4D,0X7E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,
0X9E,0X56,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X3F,0X7F,0X3F,0X87,0X3F,0X87,0X1F,0X6F,
0X5E,0X46,0X5E,0X46,0X5E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X1E,0X3E,
0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X79,0X5D,0X59,0XCE,0X79,0XCE,0X16,0X7D,
0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X5F,0X46,0X3E,0X46,0X5E,0X46,0X5E,0X46,
0X5E,0X46,0X5E,0X46,0X7E,0X4E,0X7F,0X4E,0X7F,0X4E,0X7F,0X4E,0X9F,0X4E,0X9F,0X56,
0X9F,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X5E,0XDF,0X5E,
0XDF,0X5E,0XBE,0X5E,0X7D,0X56,0X9D,0X76,0X7D,0X56,0XBE,0X5E,0XDF,0X5E,0XDF,0X5E,
0XBF,0X5E,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0X9F,0X56,0XFF,0X5E,
0X5F,0X8F,0X5F,0X8F,0X3F,0X6F,0X7F,0X4E,0X7F,0X4E,0X5F,0X46,0X5F,0X46,0X5F,0X46,
0X5F,0X46,0X5F,0X46,0X5F,0X46,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X16,0X7D,
0X79,0XCE,0XBA,0XD6,0XF3,0X9C,0XDC,0X45,0X5F,0X46,0X5F,0X46,0X7F,0X46,0X7F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,
0XBF,0X56,0XBF,0X56,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X5E,0XDF,0X5E,0XFF,0X5E,
0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFE,0X5E,0XDE,0X5E,0XBE,0X56,0XDE,0X5E,
0XFE,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XDF,0X5E,0XDF,0X5E,
0XDF,0X56,0XDF,0X56,0XFF,0X5E,0X7F,0X97,0X7F,0X97,0X7F,0X7F,0XDF,0X56,0X9F,0X4E,
0X9F,0X4E,0X9F,0X4E,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X5F,0X46,
0X5F,0X46,0XDC,0X45,0XF3,0X9C,0XBA,0XD6,0X1C,0XE7,0X96,0XB5,0X73,0X64,0X7F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X9F,0X46,0X9F,0X46,0X9F,0X4E,0X9F,0X4E,0XBF,0X4E,
0XBF,0X4E,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X56,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,
0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,
0X1F,0X67,0X1E,0X67,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,0X1F,0X67,0X1F,0X5F,
0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0X7F,0X7F,0X9F,0X97,
0X9F,0X97,0XFF,0X5E,0XBF,0X4E,0XBF,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X46,0X9F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X73,0X64,0X96,0XB5,0X1C,0XE7,0X7D,0XEF,
0X59,0XCE,0X71,0X8C,0XB5,0X44,0X9F,0X46,0X9F,0X46,0XBF,0X46,0XBF,0X4E,0XBF,0X4E,
0XBF,0X4E,0XDF,0X4E,0XDF,0X4E,0XDF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,0X1F,0X5F,
0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,
0X3F,0X67,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X3F,0X67,
0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X5F,0X1F,0X5F,
0X1F,0X5F,0X9F,0X77,0X9F,0X87,0X9F,0X87,0XFF,0X56,0XDF,0X56,0XDF,0X4E,0XDF,0X4E,
0XBF,0X4E,0XBF,0X4E,0XBF,0X4E,0XBF,0X46,0X9F,0X46,0X9F,0X46,0XB5,0X44,0X71,0X8C,
0X59,0XCE,0X7D,0XEF,0XBE,0XF7,0XFB,0XDE,0X96,0XB5,0XAF,0X73,0X33,0X44,0X9E,0X46,
0XBF,0X46,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XFF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,
0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X5F,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,
0X5F,0X67,0X5F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,
0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X5F,0X6F,0X5F,0X67,0X5F,0X67,
0X5F,0X67,0X5F,0X67,0X3F,0X67,0X3F,0X5F,0X9F,0X6F,0XBF,0X8F,0XBF,0X7F,0X5F,0X67,
0XFF,0X56,0XFF,0X56,0XFF,0X56,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XBF,0X46,0X9E,0X46,
0X33,0X44,0XAE,0X73,0X96,0XB5,0XFB,0XDE,0XBE,0XF7,0XDF,0XFF,0X7D,0XEF,0X9A,0XD6,
0X34,0XA5,0X8E,0X73,0XCB,0X42,0XBA,0X45,0XFF,0X4E,0XFF,0X4E,0XFF,0X56,0X1F,0X57,
0X1F,0X57,0X3F,0X5F,0X3F,0X5F,0X3F,0X5F,0X5F,0X5F,0X5F,0X67,0X5F,0X67,0X7F,0X67,
0X7F,0X67,0X7F,0X6F,0X7F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
0X9F,0X6F,0X9F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X67,0X7F,0X67,0X5F,0X67,0X5F,0X67,
0X9F,0X6F,0XDF,0X7F,0XDF,0X77,0X3F,0X5F,0X1F,0X57,0X1F,0X57,0XFF,0X56,0XFF,0X4E,
0XFF,0X4E,0XBA,0X45,0XCC,0X42,0X8E,0X73,0X34,0XA5,0X9A,0XD6,0X7D,0XEF,0XDF,0XFF,
0XFF,0XFF,0XDF,0XFF,0X5D,0XEF,0X9A,0XD6,0X55,0XAD,0XEF,0X7B,0XAA,0X52,0X8F,0X43,
0X16,0X45,0XFA,0X4D,0X3F,0X57,0X3F,0X57,0X5F,0X5F,0X5F,0X5F,0X7F,0X5F,0X7F,0X67,
0X7F,0X67,0X9F,0X67,0X9F,0X67,0X9F,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,
0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,
0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0X9F,0X6F,
0X9F,0X67,0X9F,0X67,0X7F,0X67,0X7F,0X67,0X7F,0X5F,0X5F,0X5F,0X5F,0X5F,0X3F,0X57,
0X3F,0X57,0XFA,0X4D,0X36,0X45,0X8F,0X43,0XAA,0X52,0XCF,0X7B,0X55,0XAD,0X9A,0XD6,
0X5D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,0XBA,0XD6,
0XD7,0XBD,0X92,0X94,0X8E,0X73,0XAA,0X52,0X49,0X4A,0X08,0X42,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0X08,0X42,0X49,0X4A,0XAA,0X52,0X8E,0X73,0X92,0X94,
0XD7,0XBD,0XBA,0XD6,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XDF,0XFF,0X9E,0XF7,0X1C,0XE7,0X79,0XCE,0X96,0XB5,0XF3,0X9C,0X71,0X8C,
0X10,0X84,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0X10,0X84,0X71,0X8C,
0XF3,0X9C,0X96,0XB5,0X79,0XCE,0X1C,0XE7,0X9E,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,
0X1C,0XE7,0XBA,0XD6,0X79,0XCE,0X59,0XCE,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X59,0XCE,0X79,0XCE,0XBA,0XD6,0X1C,0XE7,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
 
 
void lcd_gui_test(){
    rtgui_color_t pixel = white;
    int width, height = 59, i;
    rt_uint8_t* p;
    rtgui_color_t tmp[] = {0xffff};
 
    struct rtgui_graphic_driver* drv = rtgui_graphic_driver_get_default();
    const struct rtgui_graphic_driver_ops* ops = drv->ops;
 
    // clear
    i = 272;
    while(i--)
    {
        ops->draw_hline(&pixel, 0, 480, i);
    }
 
    // hline
    i = 5;
    pixel = red;
    while(i--)
    {
        ops->draw_hline(&pixel, 0, 480, 50 + i);
    }
 
    // vline
    i = 5;
    while(i--)
    {
        ops->draw_vline(&pixel, 80 + i, 0, 272);
    }
 
    // draw icon
    p = (unsigned char*)&icon;
    while(height--){
        ops->draw_raw_hline((rt_uint8_t*)p, 200, 200 + 59, 180 - height);
        p += 59 * 2;
    }
   
    // copy icon
    width = height = 59;
    while(height--)
    {
        while(width--)
        {
            ops->get_pixel(tmp, 200 + width, 180 - height);
            ops->set_pixel(tmp, 290 + width,  180 - height);
        }
        width = 59;
    }
}

这两个测试文件的显示内容是一样的。

显示一条5个像素宽的横条与竖条,以及一个图标,再复制一份同样的图标。通过这些来测试基本的五个函数有没有按预期效果显示。

 

在application.c中添加测试代码:(L55-L59)


 

编译,下载,可以看到测试结果:

 

e)      模拟器运行RTGUI

模拟器在目录bsp\simulator下,在开始之前,请阅读目录下的readme.txt。

使用命令:scons --target=vs –s 来创建Visaul C++ 2005的项目文件。

打开生成的project.vcproj。

将lcd_gui_test.c加入,再在application.c中添加测试代码(默认是运行贪吃蛇游戏);

 

修改project -> Drivers -> sdl_fb.c,让屏幕分辨率与开发板的一致。

运行后,就可以看到效果了(注:可能因调用低层代码,窗口没刷新,用其它窗口盖一下,再挪开,就可以看到上图了)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值